10

我对 Linux 中的这个 $PATH 有几个问题。

我知道它告诉 shell 搜索可执行文件的目录,所以:

  1. 环境变量是什么意思?
  2. 如何改变它的路径?是否建议更改它?
  3. 如果我改变它会有什么后果?
4

3 回答 3

14

要获取路径当前$PATH变量类型:

echo $PATH 

它告诉你的 shell 在哪里寻找二进制文件。

是的,您可以更改它 - 例如$PATH使用您的自定义脚本添加到文件夹中。

所以:如果您的脚本/usr/local/myscripts要执行它们,您将必须输入脚本的完整路径:/usr/local/myscripts/myscript.sh 更改$PATH变量后,您只需输入myscript.sh即可执行脚本。

以下是$PATH来自 RHEL 的示例:

/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user/bin

要更改您的$PATH,您必须编辑~/.profile(或~/.bash_profile)中的用户或全局$PATH设置/etc/profile

$PATH变量不准确的后果之一是,如果没有完整的$PATH.

于 2013-05-15T08:48:34.873 回答
8

首先,您对 $PATH 所做的事情的陈述是正确的。如果您要以某种方式破坏它(根据您的第三点),如果您想从终端运行 /usr/bin 中的程序,则必须手动输入 /usr/bin/xyz。根据单个程序的工作方式,这可能会破坏一些调用其他程序的程序,因为它们期望能够运行 ls 或其他东西。

因此,如果您要使用 $PATH,我建议您先将其保存在某个地方。使用命令行指令

echo $PATH > someRandomFile.txt

将其保存在 someRandomFile.txt

您可以使用 export 命令更改 $PATH。所以

export PATH=someNewPath

但是,这将用 someNewPath 完全替换 $PATH。由于路径中的项目由“:”分隔,因此您可以通过执行向其中添加项目(最好不要删除,见上文)

export PATH=$PATH:newPath

它是一个环境变量这一事实意味着程序可以找到它的值,即它是关于程序运行环境的设置。其他环境变量包括当前目录和当前代理的地址等.

于 2013-05-15T08:45:55.490 回答
0

这很简单,我喜欢这种方式。

打开 linux bash shell 并打印环境变量:

printenv

我将“ PATH”变量复制到文本编辑器并根据需要进行编辑。然后PATH像这样更新

export PATH= /variable dir list/

有用。

或者,如果您想添加单个变量,请使用此命令。

export PATH = $PATH:/variable_dir_path/

这将使用您的新目录路径扩展 PATH。

于 2018-07-31T05:14:12.400 回答