我有以下 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 的情况下运行。