任何以开头的行#
都是注释。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
(这~
是一个特殊的标记,将替换为您的主目录的路径,但您应该得到图片。)
最后,之后
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
,shell 将按照指定的顺序查找以下名称:
/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/bin/git 将覆盖 /opt/local/bin/git。
另一方面,我可能更喜欢让管理员在git
系统范围内安装。如果我只想在管理员将其提供给所有人之前使用我的本地副本,那么这更有意义:
export PATH=$PATH:~/git/bin
在这种情况下,只有在不存在的情况下~/git/bin/git
才会使用,因为路径中较早。/opt/local/bin/git
/opt/local/bin
很多命令不会存在于一个以上的地方。例如,您可以将其写入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
顺序搜索目录中的每个需要查找的命令。大多数命令将在本地系统上,因此将较慢的网络存储放在路径的末尾是最有意义的。