在 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变量,在我的例子中设置gitmono-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 terminallinux 设置任何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 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中使用 shell 脚本永久设置环境变量

使用批处理命令设置环境变量

永久设置anaconda的环境变量

windows设置临时环境变量path

cmd设置环境变量

#yyds干货盘点#Linux设置环境变量