在mac上的.profile中导出路径

时间:2012-12-20 18:55:01

标签: macos terminal profile .profile

我无法相信在谷歌搜索之后没有关于此的任何教程。 有人可以指出我的方向或解释这些行和变量在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

3 个答案:

答案 0 :(得分:43)

任何以#开头的行都是评论。 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并将其放在/Volumes/Capsule/scripts的Apple Time Capsule上。在任何其他位置都不会有一个名为my-backup-script的命令发生冲突。因此,以下任一命令都可以让您键入my-backup-script并运行正确的脚本:

export PATH=/Volumes/Capsule/scripts:$PATH

export PATH=$PATH:/Volumes/Capsule/scripts

一个更好吗?我的建议是做后者。请记住,系统需要按顺序搜索$PATH中的目录,以查找它需要查找的每个命令。大多数命令都在本地系统上,因此在路径末端放置较慢的网络存储是最有意义的。

答案 1 :(得分:7)

man pageexport只需设置一个环境变量。

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

$PATHPATH环境变量的当前值。

因此,像

这样的一行
export PATH=/foo:$PATH

/foo添加到PATH

export PATH=$PATH:/foo

/foo添加到PATH

答案 2 :(得分:1)

运行man

然后将问题回答为export

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

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

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

您可以使用$PATH

来检索此内容

现在,当您想要向此列表添加一条路径时,您需要将当前路径追加到新路径,例如/newPath:$PATH$PATH:/newPath

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

  

注意:这个答案适合初学者。