/etc/launchd.conf

/etc/launchd.conf

我想将其附加到 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

我有点担心这个方法,但到目前为止,这是唯一有效的方法。有没有更好的方法?

答案1

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

答案2

/etc/launchd.conf

launchd.conf文件是**唯一适用于命令行和 GUI 应用程序的完整解决方案OS X 版本 10.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/binPATH 的默认环境值。

请记住,此文件不是脚本,您无法使用替换。此外,要应用这些,您需要重新启动。

请记住,所有其他解决方案都只是部分解决方案:

  • environment.plist不适用于通过 Spotlight 启动的应用程序。
  • /etc/paths- 仅适用于控制台
  • /etc/csh.cshrc或者/etc/bashrc- 仅适用于某些 shell

此答案基于来自在 Mac OS X 上设置环境变量

答案3

您必须根据每个 shell 进行设置;Bash 和类似 csh 的 shell 不共享相同的配置文件和调整 PATH 的语法。

尝试这样做是launchctl行不通的,因为环境变量是在登录时设置的;它们在 Unix 中除了 shell 会话之外并不存在于系统范围内。

因此你需要添加

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 在苹果网站上

答案4

你看过path_helperOS X 命令行实用程序的手册页吗?我回答了一个关于SO的一些相关问题我想你可能会觉得有帮助。

相关内容