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

run*_*ode 27 unix linux macos system apache-storm

我试图建立一个项目,来自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
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是PATH的意思,他们究竟想让我做什么?

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

有人可以解释PATH的概念,所以我可以在将来轻松设置一切而不是盲目地遵循指示吗?


这绝对是技术问题.也许是专业人士的琐事.但对于像我这样的入门人士确实需要一些指南.我不明白为什么人们试图关闭这个问题.

lin*_*des 37

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

在维基百科上有一些简洁的解释,但基本上它用于定义搜索可执行文件的位置(无论是二进制文件,shell脚本还是其他).

您可以使用简单的shell命令找出当前PATH的设置:

: $; echo $PATH
Run Code Online (Sandbox Code Playgroud)

(注意:: $;它意味着代表你的shell提示符;它可能对你来说是非常不同的;只要知道你的提示是什么,那就是我用该字符串表示的内容.)

根据您的系统和先前的配置,值会有所不同,但输出的一个非常简单的示例可能是:

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

这是一个冒号(:)分隔的目录列表,用于搜索可执行文件(例如ls,等等).简而言之,当您尝试从shell(或以某些方式从某些其他程序中)执行命令时,它将按顺序搜索此列表中的每个目录,查找您提供的名称的可执行文件,并运行它找到的第一个.根据你的问题,这就是概念.

从那里,本文档告诉您要做的是将您已经将软件解压缩的bin目录,特别是其子目录添加到您的$PATH变量中.如何执行此操作取决于您使用的shell,但对于大多数(Bourne兼容)shell,如果您位于该目录所在的目录中,则应该可以执行此类bin操作:

: $; PATH="$PATH:$PWD/bin"; export PATH
Run Code Online (Sandbox Code Playgroud)

除了实际的Bourne shell之外,还可以缩短为:

: $; export PATH="$PATH:$PWD/bin"
Run Code Online (Sandbox Code Playgroud)

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

据推测,不过,你会想这个保存到特定的壳配置文件(可能是~/.profile,~/.bashrc,~/.zshrc...这取决于你的shell),并没有提及$PWD,而是不管它扩大到.你可以做到这一点的一种方法是做这样的事情:

: $; echo "export PATH=\"\$PATH:$PWD/bin\""
Run Code Online (Sandbox Code Playgroud)

然后将生成的行复制/粘贴到相应的配置文件中.

当然,您也可以通过其他方式生成相应的命令,尤其是当您$PWD当前不在该bin目录的位置时.

也可以看看: