Mac OS X“El Capitan”:无法读取用户设置的Bash环境变量

时间:2015-10-23 09:11:38

标签: macos bash shell environment-variables osx-elcapitan

我有一个shell脚本,可以导出构建软件项目所需的几个环境变量(Android Keystore Location)。

通常当我调用脚本时,导出环境变量,IDE可以访问它们,Bash终端上的export命令也是如此。

我安装了Mac OS X El Capitan,这是由Bash命令设置的环境变量

export FOO="bar"
当我尝试通过

访问它们时,不会返回

echo $FOO
shell上的

。相反,我只返回一个空行。

如果我在shell脚本printenv中使用$F00,则会显示。

当我从现金终端printenv拨打$FOO时,我将失踪。

我读到OS X“El Capitan”更新修复了一些与bash有关的安全问题。这可能是原因吗?

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。似乎环境变量没有从bash传播到子进程。我通过明确地向孩子添加我需要的变量来解决它。

export MYVAR=foo
MYVAR=$MYVAR ./executable_to_launch

我很想知道是否有人找到了更好的解决方案。

答案 1 :(得分:0)

您不能使用shebang脚本(第一行以#!开头的脚本和可执行文件的路径名)修改或导出shell中的变量,如果这是您正在做的事情,因为它创建了一个单独的进程来执行脚本,它导出的任何变量只对其子进程可见。

您只能通过使用.(或source)执行当前流程中的脚本来安排脚本来修改当前shell中的变量。

例如,~/.bashrc~/.bash_profile~/.bash_logout脚本由shell直接执行,因此它们可以设置或导出要由命令继承的变量,并且子shell运行自贝壳。