在 OSX 中永久设置 PATH 环境变量
Posted
技术标签:
【中文标题】在 OSX 中永久设置 PATH 环境变量【英文标题】:Setting PATH environment variable in OSX permanently 【发布时间】:2014-04-23 07:20:01 【问题描述】:我已经阅读了几个关于如何在 OSX 上永久设置环境变量的答案。
首先,我尝试了这个,How to permanently set $PATH on Linux/Unix?,但我收到一条错误消息说no such file and directory
,所以我想我可以尝试~/.bash_profile
而不是~/.profile
,但它不起作用。
其次,我找到了这个解决方案 How to set the $PATH as used by applications in os x ,它建议在
中进行更改~/.MacOSX/environment.plist
但我又遇到了no such file and directory
错误。
我需要一种方法来设置这些变量,这样就不需要在每次打开新的终端会话时一次又一次地设置它们。
【问题讨论】:
您可以创建 ~/.profile 大多数 *nix 系统识别该文件并在它存在时使用它。不过你可能需要重新启动 ~/.MacOSX/environment.plist 已弃用。 【参考方案1】:您必须将其添加到/etc/paths
。
参考(对我有用):Here
【讨论】:
这是唯一适用于 El Capitan 的解决方案。比修改.bash_profile
和.profile
好。
赞成添加参考的答案,该参考解释了如何从路径中删除元素(在 cmets 中)。
这在 EL Capitan 中有效。关闭所有终端并打开一个新终端以检查 echo $PATH。
不要忘记“重启”你的终端。
在 macOS Catalina 上也能正常工作。完成更改后重新启动终端。【参考方案2】:
我发现有一些文件可能会影响 macOS 中的 $PATH
变量(适用于我,10.11 El Capitan),如下所列:
正如投票率最高的答案所说,vi /etc/paths
,从我的角度来看,这是推荐的。
另外不要忘记/etc/paths.d
目录,其中包含的文件可能会影响$PATH
变量,在我的例子中设置git
和mono-command
路径。您可以ls -l /etc/paths.d
列出项目,rm /etc/paths.d/path_you_dislike
删除项目。
如果您使用的是“bash”环境(例如默认的Terminal.app
),您应该查看~/.bash_profile
或~/.bashrc
。可能还没有那个文件,但是这两个文件对$PATH
有影响。
如果您使用的是“zsh”环境(例如Oh-My-Zsh),您应该查看~./zshrc
而不是~/.bash*
。
并且别忘了重启所有终端窗口,然后echo $PATH
。 $PATH
字符串将是 PATH_SET_IN_3&4:PATH_SET_IN_1:PATH_SET_IN_2
。
注意到前两种方式(/etc/paths
和/etc/path.d
)位于/
目录中,这将影响您计算机中的所有帐户,而后两种方式(~/.bash*
或~/.zsh*
)位于@ 987654345@ 目录(又名/Users/yourusername/
)只会影响您的帐户设置。
阅读更多:Mac OS X: Set / Change $PATH Variable - nixCraft
【讨论】:
在某些情况下我非常喜欢编辑 .bash_profile,因为如果您的机器上有两个用户帐户,您可以只为其中一个添加脚本,例如~/dev/scripts 我没有意识到我使用的是 zsh 而不是 bash。谢谢! 谢谢,我不知道/etc/paths
和/etc/paths.d
【参考方案3】:
要在 MacOS 中将新路径添加到 PATH 环境变量中,只需在 /etc/paths.d
目录下创建一个新文件,然后在文件中添加要设置的写入路径。重启终端。您可以在提示符下查看echo $PATH
,以确认该路径是否已添加到环境变量中。
例如:向PATH
变量添加新路径/usr/local/sbin
:
cd /etc/paths.d
sudo vi newfile
添加newfile
的路径并保存。
重启终端,输入echo $PATH
确认
【讨论】:
我不确定为什么这个答案会被否决。这似乎是一种组织路径变量的合理且理智的方式。我已使用 paths.d 为每个非标准路径变量创建单独的文件。 如何保存文件,按哪个键? 保存在终端关注 - cyberciti.biz/faq/linux-unix-vim-save-and-quit-command【参考方案4】:您可以打开以下任何文件:
/etc/profile
~/.bash_profile
~/.bash_login (if .bash_profile does not exist)
~/.profile (if .bash_login does not exist)
并添加:
export PATH="$PATH:your/new/path/here"
【讨论】:
【参考方案5】:你也可以添加这个
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
到~/.bash_profile
,然后创建~/.bashrc
,您可以在其中添加更多路径到PATH。以.
为例
export PATH=$PATH:.
【讨论】:
谢谢。我使用了之前的方案,但是如果我应用这个方法,是否意味着我也可以将 DYLD_LIBRARY_PATH 变量设置为永久? 是的,你应该可以。如果您想查看更改,请关闭终端并重新打开它,或输入. ~/.bashrc
我将上面的代码添加到. ~/.bash_profile
,然后重新打开终端并输入. ~/.bashrc
,但它说没有这样的文件或目录?
您需要创建它。以上几行告诉您的.bash_profile
加载.bashrc
(如果存在)。然后在空白处.bashrc
,你可以添加任何你想要的东西。
非常感谢!我知道我问的太多了,但是您知道正确说明如何创建.bashrc
的链接吗?我找不到一个好的。【参考方案6】:
如果您使用的是 zsh,请执行以下操作。
打开 .zshrc 文件nano $HOME/.zshrc
您将在此处看到注释的 $PATH 变量
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/...
删除注释符号 (#) 并使用分隔符 (:) 像这样附加您的新路径。
出口 PATH=$HOME/bin:/usr/local/bin:/Users/ebin/Documents/Softwares/mongoDB/bin:$PATH
-
激活更改
source $HOME/.zshrc
你已经完成了!!!
【讨论】:
【参考方案7】:sudo nano /etc/paths
现在找到命令的路径我给出了一个设置颤振路径的例子。
/Users/username/development/flutter/bin
现在 cntrol+x 然后 y 。重新打开终端并检查。
【讨论】:
【参考方案8】:launchctl setenv environmentvariablename environmentvariablevalue
或
launchctl setenv environmentvariablename `command that will generate value`
使用正确的`并记得重启应用程序或终端以使环境变量生效。
您可以通过 printenv 命令检查环境变量。
注意:名为 path 的环境变量已由其他人设置,因此我们根本不会在该路径上附加任何内容。
【讨论】:
【参考方案9】:2021 年 10 月 19 日。
通过一次更正确认iplus26的答案。
测试环境
操作系统:macOS 11.6 (Big Sur) x86_64
外壳:zsh 5.8
下面是修改$PATH
环境变量的顺序:
etc/paths
中的每一行文本文件都被附加
etc/paths.d
目录内每个文本文件中的每一行都被附加
最后,$PATH
在~/.zshrc
中进一步修改
iplus26 的回答是“当(你运行)echo $PATH
,$PATH
字符串将是 PATH_SET_IN_3&4:PATH_SET_IN_1:PATH_SET_IN_2”,但情况并非总是如此。它必须取决于脚本在.zshrc
中所做的事情。例如。如果我们做类似的事情
PATH="/new/path:$PATH"
然后,新路径将位于路径列表的开头。但是,如果我们做类似的事情
PATH="$PATH:/new/path"
然后,新路径将附加在路径列表的末尾。
当然,您必须确保将修改后的路径导出到 ~/.zshrc
文件中。
export PATH=$PATH
您可以用来“漂亮打印”您的路径列表的一个方便的命令是
print -l $path
这会将每个路径打印在新行上,以提高可读性。注意 $path
与 $PATH
类似,只是它由一个空格而不是冒号分隔,:
。
希望这可以进一步澄清这个线程的新手。
【讨论】:
【参考方案10】:在 Mac 中设置路径有两种方法。
-
为变量名创建一个文件并将路径粘贴到下面
/etc/paths.d 并将文件来源到 profile_bashrc。
将~/.profile_bashrc
中的路径变量导出为
导出变量名 = $(PATH_VALUE)
并获取路径。它简单而稳定。
您可以通过Mac terminal
或linux
设置任何path variable
。
【讨论】:
【参考方案11】:显示所有隐藏文件,如 .bash_profile 和 .zshrc
$ ls -a
从 macOS Catalina 开始,mac 使用 zsh 而不是 bash。所以默认情况下mac使用zsh。 检查哪个 shell 运行:
$ echo $SHELL
/usr/zsh
$ cd $HOME
$ open -e .zshrc
或者如果使用 vim
$ vi .zshrc
然后像这样添加
$ export my_var="/path/where/it/exists"
$ export PATH=$PATH:/$my_var/bin
例如:如果安装的应用名为:myapp in /Applications 那么
export MYAPP_HOME=/Applications/myapp
export PATH=$PATH:$MYAPP_HOME/bin
或快捷方式
export PATH=$PATH:/Applications/myapp/bin
你为生活设定的 TADA !!!稍后谢谢我
【讨论】:
以上是关于在 OSX 中永久设置 PATH 环境变量的主要内容,如果未能解决你的问题,请参考以下文章