/etc/environment 中的环境变量没有传播到子进程?

/etc/environment 中的环境变量没有传播到子进程?

/etc/environment我遇到了一个问题。我在使用中设置了一个环境变量BOOST_LIBRARYDIR="/usr/local/lib/boost/release"

echo $BOOST_LIBRARYDIR正确地将值回显到终端。但是,如果我echo $BOOST_LIBRARYDIR在使用它的脚本中执行./test.sh,则显示环境变量为空。据我了解,是否也应该为子进程设置它?

答案1

如果您希望将环境变量传递给子级,则必须将其导出。要验证它是否已导出,请使用命令env。最安全的方法如下。

BOOST_LIBRARYDIR="/usr/local/lib/boost/release"; export BOOST_LIBRARYDIR

较新的外壳喜欢bashksh接受更简单的形式。

export BOOST_LIBRARYDIR ="/usr/local/lib/boost/release"

答案2

由于/etc/environment似乎来源于/etc/init/gdm.conf,我认为你可以用

export BOOST_LIBRARYDIR="/usr/local/lib/boost/release"

相关内容