$PATH 是什么意思?

Ada*_*dam 35 command-line

我正在尝试安装一些东西,其中的步骤有一个:

“把它放在你的$PATH

这是什么意思?那是什么?

我已经在这个网站和谷歌上搜索过,但每个人都认为这是理所当然的!

Jac*_*ijm 26

在终端中运行:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

或者

printf "%s\n" "$PATH"
Run Code Online (Sandbox Code Playgroud)

你看到的是一个目录列表,看起来像:

/home/jacob/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)

如果将可执行文件放在这些目录之一中,则无需设置可执行文件/脚本的路径,但可以通过其名称作为命令运行它。

按照约定,可执行文件$PATH不应该有语言扩展(尽管它们可以工作)

编辑您的 $PATH 变量

您可以(永久)$PATH通过将以下行添加到您的~/.profile文件中来添加目录(默认情况下不可见,在文件管理器中按Ctrl+H使其可见):

export PATH=$PATH:/path/to/dir
Run Code Online (Sandbox Code Playgroud)

有关环境变量的更多有用信息

(例如$PATH)可以在这里找到(感谢@Letizia 的建议)


ast*_*b0t 11

$PATH是一个环境变量文件的位置有关

当用户键入要运行的命令时,系统会PATH按照指定的顺序在 指定的目录中查找它。

您可以通过echo $PATH在终端中键入来查看指定的目录。

假设有一个可执行文件foobar01.sh出现在/home/user/foo1/foo2/foobar01.sh要执行定期。输入整个“路径”会很耗时。所以我们将目录加入到$PATH变量中,我们可以foobar.sh直接执行,甚至不需要指定路径。

您可以$PATH通过键入以下命令将其添加到:

export PATH=$PATH:/home/user/foo1/foo2
Run Code Online (Sandbox Code Playgroud)


Hop*_*nny 5

我假设您有 Windows 背景(如果事实并非如此,我们深表歉意)。通俗地说,路径(或搜索路径)是一个目录列表,您在命令行中键入的任何内容都将在这些目录中搜索。如果您输入像 ls 这样的内置命令,它将查找指定的目录列表。您可以通过输入 echo $PATH 来查找您的路径。Windows 和 *nix 之间的一个区别是:默认情况下,Windows 总是在当前目录中查找可执行文件。例如,如果 c:\myscripts 中有一个名为 uptime.bat 的文件,并且您 cd c:\myscripts 并输入 uptime,它将运行。但是,在 *nix 中,将查询路径并找到可执行文件(如果可用)。

如果将脚本保存在名为 /home/teresa/scripts 的目录中,则要执行这些脚本,您必须指定该目录的完整路径。示例:/hone/teresa/checkHost。一种变体是 cd /home/teresa,然后键入 ./checkHost (注意 ./ 意味着您明确要求文件从当前目录运行。

为了避免这种情况,您只需输入

导出 PATH=$PATH:/home/teresa/scripts

这意味着,除了现在已经存在的路径之外,还要在 /hone/teresa/scripts 中搜索。然而,这样做的问题是,一旦你注销,这个设置就会消失。因此,您应该编辑隐藏文件 ~/.bashrc,找到其中的 PATH 行,并相应地附加它。我假设你使用 bash。对于其他 shell,语法和文件有所不同。

作为一个新用户,拥有 . 在搜索路径中,这基本上意味着也在当前目录中搜索。然而,由于其他地方讨论的原因,这不被认为是一个好的做法。

华泰