在Ask Different上,有很多关于PATH
环境变量的问题,以及如何为由Shell,聚光灯或通过Finder启动的应用程序设置环境变量(典型问题:如何为Finder启动的应用程序设置PATH或如何更改PATH环境变量。 ..)。
答案范围从sh
启动脚本来/etc/paths
给/etc/launchd.conf
。在这里,我为Mac OS X Mountain Lion 10.8.2下所有应用程序的统一设置提供了答案PATH
。
在Ask Different上,有很多关于PATH
环境变量的问题,以及如何为由Shell,聚光灯或通过Finder启动的应用程序设置环境变量(典型问题:如何为Finder启动的应用程序设置PATH或如何更改PATH环境变量。 ..)。
答案范围从sh
启动脚本来/etc/paths
给/etc/launchd.conf
。在这里,我为Mac OS X Mountain Lion 10.8.2下所有应用程序的统一设置提供了答案PATH
。
Answers:
经过不同选择的多次试验后,我得出以下结论:
是否有统一的方法来设置PATH
以不同方式(例如Shell脚本,Finder和Spotlight)启动的应用程序?好吧,是和否:
PATH
在Shell启动脚本(例如.bashrc
)中进行设置仅适用于由Shell启动的应用程序。PATH
为当前launchd
进程设置launchctl setenv PATH <...>
完全无效。PATH
在/etc/launchd.conf
(并重新启动系统)会做出相应的PATH
可见的聚光灯下,码头和Finder和随后(本地)弹启动的应用程序。 为了使本地 Shell中的功能正常运行,重要的是要关闭使用/usr/libexec/path_helper
,因为中的默认路径/etc/paths
可能会更改PATH
。**中路径的顺序。
为了容纳远程 Shell,您需要将launchd
环境重新导入到Shell中。在您的.bashrc
:
# the vexatious path stuff
eval $(launchctl export)
~/.launchd.conf
不起作用。)eval "$(launchctl export)"
。
/etc/launchd.conf
是仅运行sudo -e /etc/launchd.conf
(如果您熟悉vi)或EDITOR=nano sudo -e /etc/launchd.conf
(如果您更喜欢非模式编辑器)。
扩展上一个答案,要更改中的路径/etc/launchd.conf
,您需要执行以下操作。
确保您具有管理员权限。
创建具有以下内容的新文本文件,并对其进行修改以适合您的需求:
setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
将它保存在你的home目录作为launchd.conf
。
打开Terminal.app(或您喜欢的替代品)并输入:
sudo mv ~/launchd.conf /etc
根据以前使用该sudo
命令的情况,您可能会收到一则简短的“小心操作”消息,但是无论哪种方式,您都需要输入密码。命令的全部作用就是将文件移动到/etc
目录中,例如,在TextEdit中保存文件时不能直接访问该目录。sudo
(“超级用户DO”的缩写)被使用,因为需要管理员特权才能写入该目录。
重新启动计算机。
而且你应该准备好了。祝好运!
launchd.conf
,而在于所有应用程序如何以统一的方式获取相同的PATH变量。
PATH
为我的GUI应用程序设置的方法,并且我想我可以帮助任何可怜的人可能都不知道如何实现更改...
您可以尝试https://github.com/ersiner/osx-env-sync。
它从单一来源处理命令行和GUI应用程序。它可以与最新版本的OS X(Yosemite)一起使用。
launchd
系统。您的解决方案与接受的答案中所述的问题相同。
/etc/launch.conf
并没有贝壳工作登录到通过SSH远程(我假设,因为sshd
没有通过它从其父继承它的环境launchd
到子shell)。-我将相应地编辑答案。