使用shell脚本设置控制台env

时间:2017-03-06 07:44:22

标签: linux bash shell

我有一个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设置的设置 看起来environement只在我的脚本运行的生命周期中设置。

即使脚本结束,我怎么能将环境设置为粘性。即脚本的目的是设置环境。?

P / S:我不想在我的.bash_profileetc\profile中设置它,因为我只想在需要时通过调用setmyenv.sh设置它,但不是每个时间我打开我的控制台。即不是Using .sh script to set an environment variableHow to set global environment variables using shell script .sh

的答案

1 个答案:

答案 0 :(得分:4)

运行时

sh

它在一个单独的source setmyenv.sh 进程中运行,并且当进程完成时,对PATH的更改将丢失。

您需要获取脚本:

. setmyenv.sh

exit

以便它在您当前的shell中运行,并保留所有变量赋值。请记住,setmyenv.sh脚本中没有任何jQuery.fn.highlight = function (str, className) { var regex = new RegExp(str, "gi"); return this.each(function () { $(this).contents().filter(function () { return this.nodeType == 3 && regex.test(this.nodeValue); }).replaceWith(function () { return (this.nodeValue.replace("<", "&lt;").replace(">", "&gt;") || "").replace(regex, function (match) { return "<span class=\"" + className + "\">" + match + "</span>"; }); }); }); 。如果你这样做,那么获取脚本将终止你的shell。

另见: