MAC(UNIX)系统上的PATH是什么?

即时通讯试图build立一个项目,从Git风暴https://github.com/nathanmarz/storm/wiki/Setting-up-development-environment

Download a Storm release , unpack it, and put the unpacked bin/ directory on your PATH 

我的问题是PATH是什么意思,他们要我做什么?

有时我会看到一些/ bin / path,$ PATH,echo PATH

有人可以解释一下PATH的概念吗,所以我可以在以后轻松地安装所有的东西,而不必盲目地按照指示操​​作。


这绝对是一个技术性的问题。 也许trival专业人士。 但对于像我这样的人来说,真的需要一些指导。 我不明白为什么人们试图closures这个问题。

PATH是UNIX(和UNIX-like,例如GNU / Linux)系统中的一个特殊的环境变量,经常由shell使用和操作(尽管其他的东西也可以使用它)。

维基百科有一个简单的解释,但基本上它是用来定义在哪里搜索可执行文件(无论是二进制文件,shell脚本,不管)。

你可以用一个简单的shell命令找出你当前的PATH设置为:

 : $; echo $PATH 

(注意: : $;是代表你的shell提示符;它可能对你来说是非常不同的东西;只要知道你的提示符是什么,那就是我用这个字符串表示的)。

取决于您的系统和之前的配置,值会有所不同,但输出的一个非常简单的例子可能是这样的:

 /usr/bin:/bin:/usr/local/bin 

这是一个冒号(:)分隔的目录列表,用于搜索可执行文件(比如ls等)。简而言之,当你尝试从你的shell执行一个命令(或者在某些其他程序中方法),它将搜索此列表中的每个目录,依次查找提供的名称的可执行文件,然后运行找到的第一个文件。 所以这就是你的问题的概念。

从那里,这个文档告诉你要做的是将你已经解开软件的目录,特别是它的bin子目录,添加到你的$PATH变量中。 如何做到这一点取决于你正在使用的shell,但是对于大多数( Bourne兼容)的shell来说,如果你在bin目录所在的目录下,你应该可以做这样的事情:

 : $; PATH="$PATH:$PWD/bin"; export PATH 

除了实际的Bourne shell以外,几乎所有的东西都可以缩写为:

 : $; export PATH="$PATH:$PWD/bin" 

(我不打算解释CSH兼容的shell(因为:我同意其他的建议,你不使用它们 ),但是也可以在其中做类似的事情,如果这恰好是你选择的环境因为某些原因。)

大概,你会想把这个保存到一个特定于shell的配置文件(可能是~/.profile~/.bashrc~/.zshrc …取决于你的shell),而不需要引用$PWD而是扩展到任何东西。 你可能做到这一点的一种方法是做这样的事情:

 : $; echo "export PATH=\"\$PATH:$PWD/bin\"" 

然后将结果行复制/粘贴到适当的配置文件中。

当然,你也可以用其他方式生成相应的命令,尤其是当你的$PWD目前不在那个bin目录下。

也可以看看:

  • 关于$PATH的文章 (还有更多)
  • 有关superuser.com的相关问题