在 macOS Yosemite 和 El Capitan 中设置环境变量
在 macOS Yosemite 和 El Capitan 版本中,通过 launchd
配置文件 (launchd.conf
) 设置环境变量的方法不再有效。本文将探讨这一变化的原因,并提供替代方法来设置系统级和用户级别的环境变量。
问题概述
macOS Yosemite 引入了系统的安全性增强措施,其中包括对 launchd.conf
文件的更改。在之前的 macOS 版本中,可以通过编辑 /etc/launchd.conf
或 ~/.launchd.conf
文件来设置环境变量。然而,在 Yosemite 及后续版本中,这些文件不再被读取和解析。
为什么 launchd.conf
不再有效?
macOS Yosemite 引入了系统完整性保护(System Integrity Protection, SIP)机制,以提高系统的安全性和稳定性。SIP 对某些关键目录进行了保护,限制了用户对这些目录的修改权限。因此,即使你手动编辑了 /etc/launchd.conf
文件,系统也不会读取其中的内容。
设置环境变量的方法
尽管 launchd.conf
不再有效,仍然有多种方法可以在 macOS Yosemite 和 El Capitan 中设置环境变量。
1. 使用 ~/.bash_profile
或 ~/.zshrc
如果你使用的是 Bash 或 Zsh 终端,可以通过编辑相应的配置文件来设置用户级别的环境变量。
对于 Bash 用户
编辑或创建 ~/.bash_profile
文件:
nano ~/.bash_profile
添加以下内容以设置环境变量:
export MY_VARIABLE="my_value"
保存并退出编辑器,然后重新加载配置文件:
source ~/.bash_profile
对于 Zsh 用户
编辑或创建 ~/.zshrc
文件:
nano ~/.zshrc
添加以下内容以设置环境变量:
export MY_VARIABLE="my_value"
保存并退出编辑器,然后重新加载配置文件:
source ~/.zshrc
2. 使用 ~/.MacOSX/environment.plist
文件
macOS 提供了另一种方法来设置用户级别的环境变量,即通过创建或修改 ~/.MacOSX/environment.plist
文件。
首先,确保 ~/.MacOSX
目录存在:
mkdir -p ~/.MacOSX
然后,使用 plutil
工具创建并编辑 environment.plist
文件:
plutil -dict-new ~/.MacOSX/environment.plist
plutil -add MY_VARIABLE -string "my_value" ~/.MacOSX/environment.plist
保存文件后,重启应用程序以使更改生效。
3. 使用 Launch Agents
Launch Agents 可以用来设置系统级别的环境变量。以下是一个示例,展示如何使用 Launch Agent 设置环境变量。
创建一个新的 .plist
文件:
nano ~/Library/LaunchAgents/set_environment_variable.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>set_environment_variable</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>launchctl setenv MY_VARIABLE my_value</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
保存并退出编辑器,然后加载 Launch Agent:
launchctl load ~/Library/LaunchAgents/set_environment_variable.plist
4. 使用 /etc/profile
或 /etc/paths.d/
虽然 launchd.conf
不再有效,但你仍然可以通过修改 /etc/profile
文件来设置系统级别的环境变量。
编辑或创建 /etc/profile
文件:
sudo nano /etc/profile
添加以下内容以设置环境变量:
export MY_VARIABLE="my_value"
保存并退出编辑器。重启终端以使更改生效。
总结
macOS Yosemite 和 El Capitan 引入的安全性增强措施使得 launchd.conf
文件不再被读取和解析。不过,通过其他方法如修改 shell 配置文件、使用 ~/.MacOSX/environment.plist
文件、Launch Agents 以及 /etc/profile
文件,仍然可以有效地设置环境变量。
选择适合你的方法来设置环境变量,确保系统稳定性和安全性的同时满足开发需求。