什么是 Unix PATH 变量,我该如何添加?

Kev*_*rke 11 linux unix path environment-variables macos

许多编程教程要求用户添加一些东西,PATH但没有解释它是什么。PATH向新用户解释命令行的现有资源不是很好。

  • 什么是 UnixPATH变量?

  • 我刚刚下载了一个程序,然后尝试在终端中运行一个命令并得到command not found. 这和 有什么关系PATH

  • PATH用这个命令添加了一些东西,然后事情就成功了:

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

    ......但是当我command not found下次启动电脑时我又回来了。我怎样才能让它在PATH每次打开终端时都保持不变?

  • 确定像 Git 这样的程序gcc是否已加载到我的计算机上的最佳方法是什么?

小智 17

UNIX 路径是一个环境变量,它是一个目录列表,您可以在其中查找要运行的程序。它允许您避免使用完整的路径名来运行诸如/bin/ls(例如通过放入/bin路径)之类的东西。

例如,路径可能包括:

/bin:/usr/bin:/usr/sbin
Run Code Online (Sandbox Code Playgroud)

这意味着,当您输入命令时xyzzy,它将尝试运行从当前列表中找到的第一个文件:

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy
Run Code Online (Sandbox Code Playgroud)

(如果它很聪明,它可能会跳过不可执行的文件)。

您可以使用以下命令将内容添加到路径中:

set PATH=/directory/to/add:$PATH:/low/priority/path
Run Code Online (Sandbox Code Playgroud)

/directory/to/add位于路径搜索列表的开头和/low/priority/path结尾。

但是,这通常仅针对当前shell更改。如果您想在每个 shell 中进行更改,您应该将该行添加到您的一个启动文件中,例如$HOME/.profile/etc/profile。要使用的正确文件取决于您的 shell 本身以及您如何设置启动文件。告诉它应该去哪里并不总是那么容易,但通常在联机帮助页中解释了您使用的任何 shell 的规则。

您通常可以在路径中使用以下命令之一找到命令:

which cmd
whence cmd
Run Code Online (Sandbox Code Playgroud)

找到cmd可执行文件。例如,在我的 Debian 系统上,我得到以下成绩单:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 
Run Code Online (Sandbox Code Playgroud)


小智 5

什么是?

PATH 环境变量是一个以冒号分隔的目录列表,当您输入命令时,您的 shell 会搜索这些目录。

如何设置?

PATH=$PATH:/your/directory
export PATH
Run Code Online (Sandbox Code Playgroud)

每次打开终端时,如何让它保持在 PATH 上?

将前两行放在里面~/.bash_profile(如果您bash用于终端)。