2012-12-20 66 views
13

我不能相信Google搜索后没有关于此的任何教程。 有人能指点我一个方向或解释什么这些线和变量在mac上的.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 

回答

36

开始任何线是一条评论。 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中的目录,以便查找它需要查找的每条命令。大多数命令将在本地系统上,所以在路径末尾放置较慢的网络存储器是最有意义的。

+0

那么为什么有些人显然应该预先安排时追加到$ PATH? – Pacerier

+0

如果目标是在搜索'PATH'中提到的其他地方之前搜索特定目录,应该预先考虑。如果有人选择追加,他们可能会有不同的目标。更新了一些细节的答案。 – GargantuChet

7

man page,export只是设置一个环境变量。

PATH环境变量会告诉您Mac在命令行中键入的命令的顺序。它是由冒号分隔的路径列表。

$PATHPATH环境变量的当前值。

因此,像

export PATH=/foo:$PATH 

预规划的线/fooPATH

export PATH=$PATH:/foo 

追加/fooPATH

0

运行man

,然后回答了一个问题,export

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

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

观察到:表示单个路径的端部。

您可以通过使用$PATH

现在,当你想多了一个路径添加到这个列表,那么你需要的电流路径追加到新路径像/newPath:$PATH$PATH:/newPath检索此。

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

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