如何从 zsh 中的 .sh 文件导出环境变量?

如何从 zsh 中的 .sh 文件导出环境变量?

我有以下 shell 脚本

TEST=/foopath
export TEST

它位于一个名为 的文件中test.sh,我在其中运行chmod +x test.sh

当我运行时,./test.sh我希望我可以执行echo $TEST并查看输出,/foopath但我什么也没看到。

$TEST当我运行时,需要进行哪些更改才能使上述脚本导出变量./test.sh。这是 bash 与 zsh 的区别吗?

答案1

这是父壳与子壳的区别。

当您运行时test.sh,将启动一个新的 shell 来运行它;该变量在该 shell 内导出。这意味着新 shell 知道它以及它自己的子 shell。父 shell,即您开始test.sh使用的 shell,根本不受影响(也不可能受影响)。

要查看当前 shell 中的变量,您需要获取脚本:

. test.sh

.(和之间有一个空格test.sh)。这将test.sh在不启动新 shell 的情况下运行。

相关内容