在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)。-我将相应地编辑答案。