所以我有一个脚本,我正在使用:
设置一个环境变量echo 'export env_var=hello' >> ~/.profile
source ~/.profile
当脚本完成时,我通过执行以下操作检查是否存在此环境变量:
echo $env_var
这给了我“而不是”你好“。如果我在终端上运行source~ / .profile(在终端中直接输入,而不是从任何脚本调用),将正确设置环境变量。为什么我的脚本无法正确设置环境变量,我需要做什么呢?
答案 0 :(得分:0)
env_var
正在export
- 编辑正确,但在子shell(及其子代)中正在执行脚本。
执行=脚本时,脚本在子shell上运行,子shell是调用shell的子代,因此在脚本完成后,导出的变量超出了调用shell的范围。
在调用shell中提供所有变量(和其他数据结构)的常见做法是source
(.
)脚本,而不是执行它,你正在做的但是从脚本,而不是来自交互式会话。