Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell脚本中更改父shell的路径变量_Shell - Fatal编程技术网

在shell脚本中更改父shell的路径变量

在shell脚本中更改父shell的路径变量,shell,Shell,我想更改shell脚本中的path环境变量。 执行shell脚本后,应修改path变量。您需要为脚本提供源代码,而不是执行脚本 . script.sh 或 在脚本内部,只需设置变量就足够了 当脚本被执行时,它在一个单独的shell进程中运行,并且不能轻易地更改父shell的变量 这里有更多信息:我知道有两种方法可以做到这一点。第一种方法是在当前shell的上下文中使用以下任一方法运行脚本: . myscript.sh source myscript.sh 但是,这有可能用各种各样的东西污染目

我想更改shell脚本中的path环境变量。
执行shell脚本后,应修改path变量。

您需要为脚本提供源代码,而不是执行脚本

. script.sh

在脚本内部,只需设置变量就足够了

当脚本被执行时,它在一个单独的shell进程中运行,并且不能轻易地更改父shell的变量


这里有更多信息:

我知道有两种方法可以做到这一点。第一种方法是在当前shell的上下文中使用以下任一方法运行脚本:

. myscript.sh
source myscript.sh
但是,这有可能用各种各样的东西污染目前的外壳

我更喜欢信息泄漏量最小的解决方案。这意味着仍将其作为子shell运行,但在statndard输出上输出新路径:

PATH=$(myscript.sh)
这种方法要好得多,因为路径是唯一受子shell影响的东西,但您必须小心子shell输出的内容。

第三种明显的方法是“eval”,尽管这与寻源一样危险。例如,公共终端集实用程序“tset”输出用于调用shell评估的命令。
PATH=$(myscript.sh)