使用shell脚本设置控制台环境

19 浏览
0 Comments

使用shell脚本设置控制台环境

我有一个名为setmyenv.sh的shell脚本,内容如下:

#!/bin/sh
export PATH=./abc/tools:$PATH
env | grep PATH

当我运行sh setmyenv.sh时,我可以看到PATH环境变量被相应地设置为:

PATH=./abc/tools:<现有的PATH设置>

然而,当我的命令结束后,如果我在控制台上手动输入env | grep PATH,我得到的结果是:

PATH=<现有的PATH设置>

我丢失了使用setmyenv.sh设置的环境变量。

看起来环境变量只在脚本运行期间设置。

如何在脚本结束后仍然保持环境变量设置?也就是说,脚本的目的是设置环境变量。

附注:我不想在.bash_profileetc\profile中设置,因为我只想在需要时通过调用setmyenv.sh来设置它,而不是每次打开控制台时都设置。也就是说,不是按照Using .sh script to set an environment variableHow to set global environment variables using shell script .sh的答案。

0
0 Comments

当你运行sh setmyenv.sh时,它在一个单独的sh进程中运行,当进程结束时,对PATH的更改会丢失。

你需要使用source命令来运行脚本:

source setmyenv.sh

或者

. setmyenv.sh

这样它将在当前的shell中运行,所有变量的赋值将被保留。请记住在setmyenv.sh脚本中不要使用exit命令,如果使用了,sourcing脚本将终止你的shell。

参见:

当你运行sh setmyenv.sh时,它在一个单独的shell进程中运行 - 这不同于子shell。子shell具有特定的属性,例如在子shell中可以读取局部变量 - 它们不需要被导出。通常使用括号创建子shell,例如( commands )

0