我想追加到OS X上的全局PATHvariables,以便所有的用户shell和GUI应用程序获得相同的PATH环境。
我知道我可以附加到shell启动脚本的path,但这些设置不会被GUI应用程序inheritance。
目前我发现的唯一方法是在/etc/launchd.conf中重新定义PATH环境variables:
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
我没有find一种方法来实际追加到launchd.conf中的PATH。
我有点担心这个方法,但是到目前为止,这是唯一可行的方法。 有谁知道更好的方法?
palmer的GUI信息是正确的,但是有一个更可维护的方法来修改shell所看到的path。 像mediaslave说的你可以编辑/ etc /path,但是更好的是你可以在/etc/paths.d/中放置一个文本文件,在其中有一个path,所有的shell将正确的构buildpath。
例如,在我的系统上:
$ 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
是唯一可用于OS X 10.8和10.9的命令行和GUI应用程序的完整解决scheme,适用于所有用户的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的默认环境值。
请记住,这个文件不是一个脚本,你没有select使用替代。 另外,要使这些应用程序,您需要重新启动。
请记住,所有其他人只是部分解决scheme:
environment.plist
不适用于通过Spotlight启动的应用程序。 /etc/paths
– 仅用于控制台 /etc/csh.cshrc
或/etc/bashrc
– 仅适用于某些shell 这个答案是基于同样的问题从https://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x
你将不得不把它设置在一个shell的基础上, bash和csh-like shell不共享相同的configuration文件和语法来调整PATH。
尝试在launchctl中执行此操作将不起作用,因为环境variables是在login时设置的; 在一个shell会话之外,它们在Unix系统中不存在。
所以你要添加
setenv PATH“$ PATH:/ add / my / extra / path”
到/etc/csh.cshrc和
export PATH =“$ PATH:/ more / paths:/
到/ etc / bashrc。
如果你想在GUI应用程序中使用环境variables,那就更加复杂了。 您必须在每个用户的主目录中创build一个.MacOSX / environment.plist文件。 .MacOSX目录默认情况下可能不存在,所以你必须创build它。
该文件的格式是这样的:
<?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是在苹果的网站上。
您可以通过在/ etc /path中添加行来编辑全局path。
每行一个path。
sudo nano / etc /path应该会让你在那里。
你有没有看过OS X上的path_helper
命令行工具的手册页? 我回答了一个相关的问题 ,我觉得你可能会觉得有帮助。
不知道是否有人覆盖最简单 ,最优雅的方式。
至less10.6 。
与[profile|bashrc]
文件的[/etc/|~/.]
[profile|bashrc]
可能会起作用,但这有点破解。
/etc/paths.d/
目录是要走的路。
Sudo进入你最喜欢的编辑器。
在/etc/paths.d/
创build一个名为*name*
的新文件(只是不要将其命名),每行包含一个path:
/usr/X11/bin /Developer/usr/bin
然后添加
eval'/ usr / libexec / path_helper -s`
configuration文件或bashrc,你应该很好去。
我不确定launchd是否可以接受,但请尝试:
setenv PATH“$ PATH:/ my / path”
我不知道你为什么要使用/etc/launchd.conf
而不是/etc/profile
– 但是我不是Mac OS X的专家 – 我相信你,我确定它可以工作,但launchd
是Mac OS X实现/replace为init
– Mac OS X混淆了我。
无论如何, setenv PATH "$PATH:/more/paths:/and/more/paths"
将工作(tcsh),和bourn壳等效是export PATH="$PATH:/more/paths:/and/more/paths"
– 我不知道launchd
是如何与某个shell相关的。
我想我已经问了更多的问题,然后我已经回答=)