【发布时间】:2015-03-06 04:04:09
【问题描述】:
我有一个简单的环境设置脚本,可以像这样导出一些环境变量。
#!/bin/sh
export NEWROOT=~/some/directory
echo $NEWROOT
这回显了正确的目录,但是在它运行之后,当我在同一个 shell 中 echo $NEWROOT 时,它什么也不返回。
知道为什么没有设置变量吗?
【问题讨论】:
标签: bash environment-variables
我有一个简单的环境设置脚本,可以像这样导出一些环境变量。
#!/bin/sh
export NEWROOT=~/some/directory
echo $NEWROOT
这回显了正确的目录,但是在它运行之后,当我在同一个 shell 中 echo $NEWROOT 时,它什么也不返回。
知道为什么没有设置变量吗?
【问题讨论】:
标签: bash environment-variables
shell在单独的进程中运行,子进程中的环境变量不影响父进程中的环境变量。
如果你想在同一个进程中运行脚本,可以使用点命令,像这样:
. myscript
【讨论】:
子进程不能影响其父进程的环境变量。如果您改为获取脚本,则会在当前环境中评估脚本,留下NEWROOT。
【讨论】: