22

我不敢相信谷歌搜索后没有任何关于这个的教程。有人可以指出我的方向或解释这些行和变量在 mac 上的 .profile 中的含义吗?有人如何配置它们?

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
export PATH=$PATH:/usr/local/mysql/bin
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
#export PATH=/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:/Applications/MAMP/htdocs/cake/cake/console:/opt/local/bin:/opt/local/sbin:$PATH
export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH
export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH
4

3 回答 3

53

任何以开头的行#都是注释。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顺序搜索目录中的每个需要查找的命令。大多数命令将在本地系统上,因此将较慢的网络存储放在路径的末尾是最有意义的。

于 2012-12-20T19:10:02.503 回答
8

man页面export只需设置一个环境变量。

环境变量告诉您​​的PATHMac 在哪里查找您在命令行上键入的命令,按照它应该查找的顺序。它是一个路径列表,由冒号分隔。

该值$PATHPATH环境变量的当前值。

因此,像这样的一行

export PATH=/foo:$PATH

前置/foo_PATH

export PATH=$PATH:/foo

附加/fooPATH

于 2012-12-20T18:59:02.677 回答
3

man

然后将问题回答为export

您可以查看当前PATH值并观察到存在多个路径。

(我的是/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

观察它:代表单个路径的结束。

您可以使用$PATH

现在,当您想在此列表中再添加一个路径时,您需要将当前路径附加到新路径,例如/newPath:$PATHor $PATH:/newPath

最后为了保存它,你需要使用export PATH=$PATH:/newPath.

注意:此答案适用于新手开发人员。

于 2016-12-06T10:27:01.027 回答