在mac上的.profile中导出路径

tip*_*cky 17 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
Run Code Online (Sandbox Code Playgroud)

Gar*_*het 44

任何开头的行#都是注释.PATH=设置PATH变量的值,$ PATH扩展为当前值,并且export开头使值可用于从终端运行的程序.

我们假设PATH的初始值是/usr/bin:/bin.

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Run Code Online (Sandbox Code Playgroud)

替换$PATH为$ PATH的先前值.所以上面的设置PATH

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

向前进,

export PATH=$PATH:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

再次,将$ PATH替换为之前的值:

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

export PATH=/android-sdks/platform-tools:~/android-sdks/tools:$PATH
Run Code Online (Sandbox Code Playgroud)

我们有

/android-sdks/platform-tools:~/android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
Run Code Online (Sandbox Code Playgroud)

(这~是一个特殊的令牌,将被替换为主目录的路径,但你应该得到图片.)

最后,之后

export PATH=/Users/android-sdks/platform-tools:/Users/android-sdks/tools:$PATH
Run Code Online (Sandbox Code Playgroud)

我们得到

/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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

要查看PATH的当前值,请运行

echo $PATH
Run Code Online (Sandbox Code Playgroud)

您应该在开头PATH或结尾添加新目录吗?它并不总是重要的,但有时它确实如此.这取决于您希望系统首先检查的位置.

如果目标是在查找默认目录之前搜索其他目录,则应添加到开头.例如,git是用于管理源代码的实用程序.如果我想git在〜/ git中安装更新版本并默认使用,我会这样做:

export PATH=~/git/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

这意味着〜/ git/bin/git会覆盖/ opt/local/bin/git.

另一方面,我可能更喜欢让管理员在git系统范围内安装.如果我想用我的本地副本,直到管理员使其可用于每个人,那么这更有意义:

export PATH=$PATH:~/git/bin
Run Code Online (Sandbox Code Playgroud)

在这种情况下,~/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
Run Code Online (Sandbox Code Playgroud)

要么

export PATH=$PATH:/Volumes/Capsule/scripts
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*umb 7

man页面中,export只需设置一个环境变量.

PATH环境变量告诉你的Mac到哪里寻找你的命令行上键入的顺序,它应该是命令.它是一个由冒号分隔的路径列表.

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

因此,一条线就像

export PATH=/foo:$PATH
Run Code Online (Sandbox Code Playgroud)

/foo此之前PATH

export PATH=$PATH:/foo
Run Code Online (Sandbox Code Playgroud)

追加/fooPATH


Nik*_*ure 5

跑步man

然后回答问题export

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

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

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

您可以使用以下方法检索此内容$PATH

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

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

注意:这个答案是针对新手开发人员的。