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


11

许多编程教程都要求用户向其添加某些内容,PATH但不解释其含义。PATH向命令行新用户说明的现有资源不是很好。

  • 什么是Unix PATH变量?

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

  • PATH使用此命令向中添加了一些内容,然后一切正常:

    export PATH=/path/to/some/bin:$PATH
    

    ...但是command not found下次我启动计算机时又得到了。PATH每次打开终端机时如何使它停留在上面?

  • 确定gcc我的计算机上是否已加载Git或类似程序的最佳方法是什么?


3
我已经阅读了许多关于SO的答案,但还没有找到以新手能够理解的方式回答所有这些问题的答案。我想要可以将新的命令行用户链接到的内容。我希望将其添加为社区Wiki,并对其给予极大的奖励。
凯文·伯克

4
我敢打赌,如果我在Google上搜索此问题,可以找到50个匹配。怎么不行
trojanfoe 2012年

2
而且,如果这些链接都没有指向有资格在此处提出问题的SO,则应在此处添加。我们希望 SO成为Google解决编程问题的地方。

请参阅此MSO帖子,以了解Kevin提出此问题的动机。他很可能会进行编辑以澄清此信息的帮助。
jmort253

1
@ jmort253:好吧,他应该尽快开始做。4/5票。我不会关闭,因为我知道要编辑该问题,但是他最好使其快速。
马达拉的鬼魂

Answers:


17

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

例如,路径可能包含:

/bin:/usr/bin:/usr/sbin

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

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

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

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

set PATH=/directory/to/add:$PATH:/low/priority/path

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

但是,这通常仅在当前外壳程序中发生变化。如果要在每个Shell中进行更改,则应将该行添加到一个启动文件中,例如$HOME/.profile/etc/profile。正确使用的文件取决于您的外壳本身以及设置启动文件的方式。告诉它应该去哪里并不总是很容易,但是手册中通常会针对使用的任何shell解释规则。

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

which cmd
whence cmd

查找cmd可执行文件。例如,在我的Debian系统上,我得到以下记录:

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
这个问题是否属于stackoverflow?
trojanfoe 2012年

@trojanfoe,与任何与shell相关的问题一样,是的,我会这样认为。这也是一种编程语言。

我修改了答案以:用作分隔符,因为它在* nix上使用。Windows使用;(可能是因为中:已经有含义C:)。
Joachim Sauer

实际上,@ Joachim说一个给定的外壳程序(而不是UNIX本身)具有特定的目录分隔符可能更正确,但是您最适合我使用的所有外壳程序。感谢您的修复,干杯。

@paxdiablo:是的,我考虑过这一点,但我也想不出任何不使用的unix shell :(例如,在Java中,path.separator始终:在* nix上)。
Joachim Sauer

5

什么是?

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

如何设置?

PATH=$PATH:/your/directory
export PATH

每次打开终端时如何使它停留在PATH上?

将前两行放入其中~/.bash_profile(如果要bash用于终端)。


3

PATH是类似Unix的系统的环境变量。

设定路径:

export PATH=$PATH:<your path>

未设定的路径:

unset $PATH

永久设置路径

在您的主文件夹中,启用View-> Show Hidden Files .... pen .bash_profile文件,在导出PATH行之前,添加此行.....

PATH=$PATH:<yourpath>

注销并再次登录……检查其是否正常……!它应该工作...


1
不好意思,但是格式和措辞不好。尽量避免过多使用粗体,过多使用省略号(“ ...”)并写完整的句子。这应该有助于避免将来出现此类投票。
约阿希姆·绍尔

1
@Joachim Sauer为什么不编辑答案?您为什么喜欢拒绝投票?

1
@MikroDel:因为该问题已经有了更好,更高质量的答案,投票减少了工作量。如果这是唯一的答案,那么我可能会对其进行编辑。另外:尽管通常没有什么好玩的,但是向下投票是一种合法的工具(是的,每个问题/答案旁边都有向上向下箭头)。
Joachim Sauer

1
编辑或发布该评论同时服用附近,但编辑变得更好,和帮助山塔努班纳吉和其他用户

@MikroDel:所以解释降票背后的原因对用户没有帮助吗?我认为我的推理很清楚,并给出了提高质量的实用技巧。您唯一的坚持是降低了我解释我的不赞成票的意愿(而且正如您在我的个人资料中所看到的,我并没有过分地反对票)。
Joachim Sauer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.