我有一个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有关的安全问题。这可能是原因吗?
答案 0 :(得分:0)
我遇到了类似的问题。似乎环境变量没有从bash传播到子进程。我通过明确地向孩子添加我需要的变量来解决它。
export MYVAR=foo
MYVAR=$MYVAR ./executable_to_launch
我很想知道是否有人找到了更好的解决方案。
答案 1 :(得分:0)
您不能使用shebang脚本(第一行以#!
开头的脚本和可执行文件的路径名)修改或导出shell中的变量,如果这是您正在做的事情,因为它创建了一个单独的进程来执行脚本,它导出的任何变量只对其子进程可见。
您只能通过使用.
(或source
)执行当前流程中的脚本来安排脚本来修改当前shell中的变量。
例如,~/.bashrc
,~/.bash_profile
和~/.bash_logout
脚本由shell直接执行,因此它们可以设置或导出要由命令继承的变量,并且子shell运行自贝壳。