为什么在脚本结束后导出变量为空?

cod*_*joe 3 linux bash ubuntu

我在Linux shell脚本中有一个简单的命令(比如foo.sh).在其中我这样做:

export INSTALL_DIR=/mnt/share/TEST_Linux
Run Code Online (Sandbox Code Playgroud)

我运行脚本:

> sh foo.sh
Run Code Online (Sandbox Code Playgroud)

完成后我尝试获取变量,但值为空.

> echo $INSTALL_DIR
Run Code Online (Sandbox Code Playgroud)

如果我直接输入命令,导出的var将变为全局到打开的终端窗口.我正在使用Ubuntu.

小智 7

设置环境变量是运行脚本的子bash进程的本地变量.为了实现你想要的,你需要像这样来源:source foo.sh.这意味着它由您的主要bash进程运行.然后,在脚本完成后,将保留变量的设置.


cni*_*tar 5

该变量仅在您启动的新 shell中导出。您可能想使用 执行脚本source

source foo.sh
Run Code Online (Sandbox Code Playgroud)