如何在OS X上设置全局path?

我想追加到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相关的。

    我想我已经问了更多的问题,然后我已经回答=)