问题描述
我已经编写了以下脚本,以便在需要时设置一些环境变量。
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
在命令和结果之下,我可以在终端上看到:脚本运行,但变量未设置在最后。
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
怎么了?提前致谢。米尔科
最佳解决思路
export将变量赋值导出到sub-shells,即作为包含export指令的shell的子进程启动的shell。您的命令行环境是脚本 shell 的父级,因此它看不到变量分配。
您可以使用source bash命令在当前shell环境中执行脚本命令并实现您想要的操作,例如,
source script.sh
echo $BASE
会产生
/home/develop/trees
.命令是source的同义词,通常在脚本中可以看到。
. script.sh # identical to "source script.sh"
次佳解决思路
我经常想设置一个环境变量而不麻烦。
这是我添加到我的.bashrc实现这种便利。
defect() {
if [ $1 ] && [ -z $2 ]
the