Mac OS X Mojave - 永久设置环境变量
Posted
技术标签:
【中文标题】Mac OS X Mojave - 永久设置环境变量【英文标题】:Mac OS X Mojave - set environment variable permanently 【发布时间】:2019-09-03 00:33:19 【问题描述】:我正在使用 mac os mojave (10.14.3)。我在两者中都设置了环境变量
~/.bash_profile
和 ~/.bashrc
我同时运行了 ~/.bash_profile
和 ~/.bashrc
。然后在同一个终端中,我可以看到我设置的值(使用printenv
),但是如果我打开一个新终端,我就看不到之前设置的环境变量。
请给点建议。
更新
在 mac os Bigsur(11.2.3) 中,默认终端是 zsh(我没有检查其他版本)并在 ~/.zshenv
中设置 envs
echo 'export PATH=$PATH:$PATH:~/Library/android/sdk/build-tools/29.0/' >> ~/.zshenv
运行. ~/.zshenv
帮助我永久保存了环境
【问题讨论】:
见apple.stackexchange.com/questions/289060/… 请按照步骤here。希望对你有帮助 This answer,在 macOS Mojave 10.14 上使用 launchctl,为我工作! 【参考方案1】:这适用于 OS X 10.14“Mojave”:
第一步:进入$HOME/Library/LaunchAgents
目录,创建setenv.MY_VAR.plist
文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.MY_VAR</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>MY_VAR</string>
<string>SOME_VALUE_FOR_MY_VAR</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
请注意您的文件名和文件中的条目是否匹配。
第 2 步:运行 launchctl load ~/Library/LaunchAgents/setenv.MY_VAR.plist
或 - 重新启动系统。
第 3 步:重新启动终端应用。
第 4 步:检查 var 是否存在:env
。它应该给你:MY_VAR=SOME_VALUE_FOR_MY_VAR
。
如果您想进行更多更改,请先执行launchctl unload...
,然后再执行launchctl load...
。
这是每个用户的设置。如果您想为所有用户设置,请尝试在/Library/LaunchAgents
中执行相同操作。
【讨论】:
如果你想为所有用户做这件事,我认为正确的地方是/Library/LaunchAgents
,而不是/Library/LaunchDaemons
@JosephFitzgerald 这就是最后一句话所说的。 :-)
不完全。当正确的地方是代理时,您编写了守护程序。最后一句应该突出显示您自己的库文件夹与根库文件夹。
最后一句已于 2021 年 10 月进行了编辑,现在应该是正确的。感谢@JosephFitzgerald 指出这一点。【参考方案2】:
不确定您是如何设置环境变量的,但请确保您使用 export 命令将其跨 shell 持久化,例如export EDITOR=/usr/bin/vim
。然后,您可以使用 export -p
检查从另一个 shell 导出的变量。
直接从命令行运行bash
将获取您的.bashrc 文件。如果在您打开新终端窗口时未获取 .bashrc 文件,则您可能是 not running bash。
如果 /bin/sh
默认是您的默认 shell(而不是 bash),您可以通过运行 chsh -s $(which bash)
来更改它。
【讨论】:
以上是关于Mac OS X Mojave - 永久设置环境变量的主要内容,如果未能解决你的问题,请参考以下文章