Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在mac上导出.profile中的路径_Macos_Terminal_Profile_.profile - Fatal编程技术网

Macos 在mac上导出.profile中的路径

Macos 在mac上导出.profile中的路径,macos,terminal,profile,.profile,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

我不敢相信在谷歌搜索之后竟然没有任何关于这方面的教程。 有人能给我指出一个方向或者解释一下这些线和变量在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
从中,
export
仅设置一个环境变量

PATH
环境变量告诉Mac在何处查找您在命令行中键入的命令,其顺序应与您在命令行中键入的顺序一致。它是路径列表,由冒号分隔

$PATH
PATH
环境变量的当前值

因此,像

export PATH=/foo:$PATH
/foo
前置到
路径


/foo
追加到
路径

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

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

export PATH=/opt/local/bin:/opt/local/sbin:$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
之后

我们有

/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
要查看路径的当前值,请运行

echo $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
在路径中较早

许多命令不会存在于多个位置。例如,您可以编写
我的备份脚本
,并将其放在位于
/Volumes/Capsule/scripts
的Apple Time Capsule上。在任何其他位置都不可能有名为
my backup script
的命令发生冲突。因此,以下任一命令都允许您键入
my backup script
并运行正确的脚本:

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

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

Run
man

然后回答以下问题:
export

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

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

请注意,
表示单个路径的结束

您可以使用
$PATH

现在,当您想向该列表添加一个以上路径时,需要将当前路径附加到新路径,如
/newPath:$path
$path:/newPath

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

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


那么,为什么有些人会在显然应该预先设置的情况下附加到$PATH?如果目标是在搜索
PATH
中提到的其他位置之前搜索特定目录,那么就应该预先设置。如果有人选择附加,他们可能有不同的目标。用一些细节更新了答案。
export PATH=$PATH:~/git/bin
export PATH=/Volumes/Capsule/scripts:$PATH
export PATH=$PATH:/Volumes/Capsule/scripts