我有一个 shell 脚本 setmyenv.sh
如下
#!/bin/sh
export PATH=./abc/tools:$PATH
env | grep PATH
当我运行它时 sh setmyenv.sh
,我可以看到相应地设置了 PATH env。
PATH=./abc/tools:<whatever my existing PATH setting>
但是,在我的命令完成后,如果我手动输入 env | grep PATH
在控制台上,我得到了
PATH=<whatever my existing PATH setting>
我丢失了使用 setmyenv.sh
设置的设置
看起来环境只在我的脚本运行的生命周期内设置。
即使在脚本结束后,我怎么能让环境设置为粘性的。即脚本的目的是设置环境。?
P/S: 我不想在我的 .bash_profile
或 etc\profile
中设置它,因为我只想在需要时设置它,通过调用setmyenv.sh
,但不是每次我打开控制台时。即不是根据 Using .sh script to set an environment variable 的答案或 How to set global environment variables using shell script .sh
最佳答案
当你运行时
sh setmyenv.sh
它在一个单独的 sh
进程中运行,当该进程完成时,对 PATH 的更改将丢失。
您需要获取您的脚本:
source setmyenv.sh
或
. setmyenv.sh
这样它就可以在您当前的 shell 中运行,并且所有变量赋值都将被保留。请记住不要在 setmyenv.sh
脚本中有任何 exit
。如果这样做,获取脚本将终止您的 shell。
另见:
关于linux - 使用 shell 脚本设置控制台环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42620104/