开始任何线是一条评论。 PATH=
设置变量PATH
的值,$ PATH扩展为当前值,开始时export
使该值可用于您从终端运行的程序。
我们假设PATH的初始值是/usr/bin:/bin
。
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
用前面的$ PATH值代替$PATH
。所以上面套PATH
到
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin
展望未来,
export PATH=$PATH:/usr/local/mysql/bin
再次,与前值替换$ PATH:我们有
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
后
export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH
/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
(该~
是将与路径,以你的home目录来代替一个特殊的记号,但你应该得到的图片。)
最后经过
export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH
我们得到
/Users/android-sdks/platform-tools:/Users/android-sdks/tools:/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
PATH
用于查找您在通信中输入的命令和线。所以,如果你键入foo
,外壳会寻找下面的名称,在指定的顺序:
/Users/android-sdks/platform-tools/foo
/Users/android-sdks/tools/foo
/android-sdks/platform-tools/foo
~/android-sdks/tools/foo
/opt/local/bin/foo
/opt/local/sbin/foo
/usr/bin/foo
/bin/foo
/usr/local/mysql/bin/foo
要查看PATH的当前值,运行
echo $PATH
如果您添加新的目录到PATH
开头,还是最后?它并不总是重要的,但有时它确实。这取决于您希望系统首先检查哪些位置。
如果目标是在查看默认目录之前搜索其他目录,则应该添加到开头。例如,git
是用于管理源代码的实用程序。如果我想在〜/ git的安装的git
较新的版本,并使用该通过默认情况下,我会做:
export PATH=~/git/bin:$PATH
这意味着〜/ git的/斌/ git的会覆盖/选择/本地/斌/饭桶。
另一方面,我可能更喜欢让系统管理员安装git
。如果我想用我的本地副本仅直到管理员使其可用于每个人,那么这会更有意义:
export PATH=$PATH:~/git/bin
在这种情况下,如果/opt/local/bin/git
尚未因为/opt/local/bin
存在~/git/bin/git
将只使用在路径中更早。
很多命令不会存在于多个地方。例如,您可能会写my-backup-script
并将其放在一个Apple Time Capsule上,地址为/Volumes/Capsule/scripts
。在任何其他地方都不会有一个叫做my-backup-script
的命令发生冲突。因此,无论下面的命令将让你键入my-backup-script
和运行合适的剧本:
export PATH=/Volumes/Capsule/scripts:$PATH
或
export PATH=$PATH:/Volumes/Capsule/scripts
是一个更好?我的建议是做后者。请记住,系统将需要搜索$PATH
中的目录,以便查找它需要查找的每条命令。大多数命令将在本地系统上,所以在路径末尾放置较慢的网络存储器是最有意义的。
那么为什么有些人显然应该预先安排时追加到$ PATH? – Pacerier
如果目标是在搜索'PATH'中提到的其他地方之前搜索特定目录,应该预先考虑。如果有人选择追加,他们可能会有不同的目标。更新了一些细节的答案。 – GargantuChet