Python os.path.expandvars仅适用于某些变量

时间:2018-06-14 12:49:34

标签: python environment-variables

对于某些env变量,运行os.path.expandvars失败。看起来太基本了,不可能是真实的。

$ echo $HOSTTYPE 
x86_64
$ echo $HOME     
/labhome/eladw
$ python -c 'import os; print os.path.expandvars("$HOSTTYPE")'
$HOSTTYPE
$ python -c 'import os; print os.path.expandvars("$HOME")'
/labhome/eladw

知道我错过了什么(我正在运行python 2.7)?

1 个答案:

答案 0 :(得分:4)

在shell中设置的环境变量不会自动导出到子进程。仅仅因为 shell 具有HOSTTYPE变量,并不意味着子变量可以看到变量。

首先导出变量:

$ export HOSTTYPE

您可以在一个步骤中将设置和导出变量组合为:

$ export HOSTTYPE=x86_64

演示:

$ HOSTTYPE=x86_64
$ python -c 'import os; print os.path.expandvars("$HOSTTYPE")'
$HOSTTYPE
$ export HOSTTYPE
$ python -c 'import os; print os.path.expandvars("$HOSTTYPE")'
x86_64

请参阅Difference between environment variables and exported environment variables in bash