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

aka*_*kai 10 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
Run Code Online (Sandbox Code Playgroud)

m47*_*730 26

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

vi test.sh
Run Code Online (Sandbox Code Playgroud)

在文件内:

#!/bin/bash

export PATH="$PATH:test"
Run Code Online (Sandbox Code Playgroud)

让我们测试一下:

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
Run Code Online (Sandbox Code Playgroud)

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

  • @akai` .bashrc`文件的源环境与启动的shell相同.它不是在自己的环境中运行的脚本. (7认同)
  • 好吧...看来我完全错了...但是为什么.bashrc中的`export`是永久性的?(对不起,这可能是另一个问题) (2认同)

dan*_*rez 11

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

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

#!/bin/bash
export PATH="$PATH:test"
export MESSAGE="Now i am available on the current shell"
Run Code Online (Sandbox Code Playgroud)

现在,在 shell 中输入,

> source ./loadMyenvironment.sh
Run Code Online (Sandbox Code Playgroud)

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

> echo $MESSAGE
Now i am available on the current shell
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • 这对我很有帮助!`source` 命令正是我正在寻找的,我相信许多 Linux 初学者都在寻找这个!十分感谢! (3认同)