如何暂时只在bash脚本中设置PATH?

时间:2016-12-28 08:17:41

标签: bash

可以为以下命令临时设置PATH。此外,可以在脚本中设置PATH,该脚本永久保留(在该终端或会话中)。如何在脚本中设置全局有效的PATH,而不是在脚本完成后设置?

示例:

PATH=$PATH:/path1 path1 is valid only for this line
export PATH=$PATH:/path2
path2 is valid for this line
and this line too
I like it

exit

> path2 is still valid after the script finishes
> and when I type commands here manually
> I don't like it

2 个答案:

答案 0 :(得分:17)

根本不是真的。 如果您编写脚本并更改$ PATH变量,则更改仅在脚本中生效:

vi test.sh
文件内的

#!/bin/bash

export PATH="$PATH:test"

让我们测试一下:

echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/matteo/.local/bin:/home/matteo/bin:./bin:/home/matteo/.local/bin:/home/matteo/bin:./bin

chmod ug+x test
./test 
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/matteo/.local/bin:/home/matteo/bin:./bin:/home/matteo/.local/bin:/home/matteo/bin:./bin

相同的输出。此更改仅在脚本内有效!

答案 1 :(得分:2)

我认为您正在寻找“源”命令(Linux)。

首先在文件中写入设置路径命令(或其他内容),例如loadMyEnvironment.sh

#!/bin/bash
export PATH="$PATH:test"
export MESSAGE="Now i am available on the current shell"

现在,在外壳中输入

> source ./loadMyenvironment.sh

现在,在当前shell中,您可以检查是否已加载环境。

> echo $MESSAGE
Now i am available on the current shell

希望这会有所帮助。