我正在尝试将 shell 变量设置为 $PWD - 执行脚本的路径。这就是我所拥有的,setenv.sh:
#!/bin/bash
export WORK_AREA=$PWD #also tried "$PWD", $(pwd), `pwd`
但是当我从 shell 中运行时
> ./setenv.sh
> echo $WORK_AREA
WORK_AREA 没有值
答案1
export
“向下”工作,而不是“向上”工作。当您在作为 shell 子级的脚本中导出值时,它不会将其导出到作为其父级的 shell。它只会改变自己孩子的环境。
答案2
如果您希望脚本影响当前的 shell 环境,则需要获取脚本的来源,例如:
source setenv.sh
或者,使用点表示法:
. setenv.sh
当您执行脚本时,它会在子 shell 中运行,就像您使用命令运行它一样bash
。子 shell 环境的更改不会影响父环境。请注意,我们在这里只讨论环境变量。如果您在子 shell 中修改文件,那么该更改肯定会传递到父 shell。
请参阅相关的超级用户帖子: