bash 导出不设置变量

bash export not setting variable

我有一个简单的环境设置脚本,可以像这样导出一些环境变量。

#!/bin/sh

export NEWROOT=~/some/directory
echo $NEWROOT

这回显了正确的目录,但是在它的 运行 之后,当我在同一个 shell 中 echo $NEWROOT 时,它 returns 什么都没有。

知道为什么变量没有设置吗?

shell是运行在一个单独的进程中,子进程中的环境变量不会影响父进程中的环境变量。

如果你想运行脚本在同一个进程中,你可以使用点命令,像这样:

. myscript

子进程不能影响其父进程的环境变量。如果改为获取脚本,那将在当前环境中评估脚本,留下 NEWROOT.