我想在OS X上追加全局PATH环境变量,以便所有用户shell和GUI应用程序获得相同的PATH环境。
我知道我可以附加到shell启动脚本中的路径,但这些设置不会被GUI应用程序继承。
到目前为止我找到的唯一方法是重新定义PATH环境变量 /etc/launchd.conf:
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
我无法找到一种实际附加到PATH的方法 launchd.conf
。
我对这种方法有点担心,但到目前为止,这是唯一有效的方法。有没有更好的办法?
palmer的GUI信息 是正确的,但有一种更可维护的方法来修改shell看到的路径。喜欢 mediaslave说,你可以编辑 /etc/paths
,但更好的是你可以删除一个文本文件 /etc/paths.d/
在其中有一个路径,所有shell将正确构造路径。
例如,在我的系统上:
$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11 git postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin
/etc/launchd.conf
该 launchd.conf
file是**唯一可用于命令行和GUI应用程序的完整解决方案 OS X v10.8 (山狮)和 v10.9 (Mavericks),适用于所有用户的GUI和控制台应用程序。
sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf
加
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
在上面的例子中我添加了 /usr/local/bin
到PATH的默认环境值。
请记住,此文件不是脚本,您无法使用替换。此外,要应用这些,您需要重新启动。
请记住,所有其他只是部分解决方案:
environment.plist
不适用于通过Spotlight启动的应用程序。
/etc/paths
- 仅限控制台
/etc/csh.cshrc
要么 /etc/bashrc
- 仅限一些贝壳
这个答案基于同样的问题 在Mac OS X上设置环境变量。
你将不得不逐个shell地设置它; Bash和类似csh的shell不共享用于调整PATH的相同配置文件和语法。
试着这样做 launchctl
不起作用,因为环境变量是在登录时设置的;它们在shell会话之外的Unix系统中不存在。
所以你想要添加
setenv PATH "$PATH:/add/my/extra/path"
至 /etc/csh.cshrc
和
export PATH="$PATH:/more/paths:/
至 /etc/bashrc
。
如果您想在GUI应用程序中使用环境变量,那就更复杂了。你必须创建一个 .MacOSX/environment.plist
文件在每个用户的主目录中。该 .MacOSX
默认情况下,目录可能不存在,因此您必须创建它。
文件的格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PRINTER</key>
<string>myprinter</string>
<key>PATH</key>
<string>/path/to/thing/I/need</string>
<key>DISPLAY</key>
<string>0:1</string>
</dict>
</plist>
更多关于 environment.plist
在Apple的网站上。
您可以通过添加行来编辑全局路径 /etc/paths
,每行一条路径。
sudo nano /etc/paths
应该让你到那儿。
你有没有看过的手册页 path_helper
OS X上的命令行实用程序?我回答了一个 关于SO的一些相关问题 我认为你可能会觉得有帮助。
我不确定是否有人覆盖 最简单的 而且大多数 优雅 办法。至少在 的Mac OS X v10.6中 (Snow Leopard)上。
弄乱了 [/etc/|~/.]
的 [profile|bashrc]
文件可能会工作,但它有点像黑客。该 /etc/paths.d/
目录是要走的路:
- Sudo进入你最喜欢的编辑器。
创建一个名为的新文件 *name*
(只是不要说它已经存在的东西) /etc/paths.d/
每行一条路径:
/usr/X11/bin
/Developer/usr/bin
然后加
eval '/usr/libexec/path_helper -s`
至 profile
要么 bashrc
,你应该好好去。
我不确定launchd是否接受了这个,但请尝试:
setenv PATH“$ PATH:/ my / path”