variable see example change python bash environment-variables pythonpath

see - python-os.getenv y os.environ no ven las variables de entorno de mi shell bash



pythonpath environment variable (2)

Esas variables (parámetros en terminología bash) no son variables de entorno . Desea exportarlos al entorno, utilizando export o declare -x . Consulte la use .

Estoy en ubuntu 13.04, bash, python2.7.4

El intérprete no ve las variables que establezco.

Aquí hay un ejemplo:

$ echo $A 5 $ python -c ''import os; print os.getenv( "A" )'' None $ python -c ''import os; print os.environ[ "A" ]'' Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: ''A''

Pero todo funciona bien con la variable PATH :

$ echo $PATH /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games $ python -c ''import os; print os.getenv("PATH")'' /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Y se nota cambios en PATH :

$ PATH="/home/alex/tests/:$PATH" $ echo $PATH /home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games $ python -c ''import os; print os.getenv("PATH")'' /home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

¿Qué podría estar mal?

PS el problema viene al usar $PYTHONPATH :

$ python -c ''import os; print os.getenv("PYTHONPATH")'' None


Jajaja ¡La solución es simple!

Estaba configurando variables con el comando simple $ A=5 ; cuando usas $ export B="kkk" todo está bien.

Eso es beca export use hace que la variable esté disponible para los subprocesos:

  • crea una variable en el shell
  • Y lo exporta al environment de la concha.
  • El environment la lista se pasa a los subprocesos del shell.

Plain $ A="kkk" simplemente crea variables en el shell y no hace nada con el environment .

El intérprete al que se llama desde el shell obtiene su environment del padre: el shell. Entonces realmente la variable debería ser exportada al environment antes.