我在命令行上键入echo $PATH并获取

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

我想知道这是在哪里设置的,因为我的.bash_login文件为空。

我特别担心的是,在安装MacPorts之后,它在/opt中安装了一堆垃圾。我不认为该目录甚至不存在于普通的Mac OS X安装中。

更新:感谢jtimberman纠正了我的echo $PATH语句

评论

来自SMcCandlish的评论:要更改站点范围路径(例如包含/ usr / libexec或其他内容)的最简单解决方案是编辑/ etc / paths。尽管新的/etc/paths.d/可以正常运行,但实际上比维护单个文件更麻烦。正如其他人所暗示但未明确指出的那样,如果所需的路径更改仅对一个用户有用,那么最好在该用户的主目录(而不是系统范围内)的bash和/或tcsh配置文件中进行该更改。 br />
@Sathya,在我看来/etc/paths.d对于安装脚本很有用。如果我想让我的安装脚本将已安装的程序添加到路径中,则可以将文件放在/etc/paths.d中。如果要手动编辑路径,则/ etc / paths是更好的选择。

我主要根据此帖子制作了一个脚本,该脚本可以快速打印出沿以下多个位置定义PATH的位置:gist.github.com/lopespm/6407349952bc8a1ff8fb

#1 楼

bash启动时,每次登录时都会读取以下文件。对于OS X而言,这意味着每次您打开新的Terminal窗口。

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)


通过在命令行上键入bash启动新外壳时,它会读取.bashrc

OS X还使用~/.MacOSX/environment.plist设置更多的环境变量,包括必要的路径。

最后,外壳程序也读取/etc/paths/etc/paths.d


/opt/local/bin等由MacPorts添加到~/.tcshrc中。另外请务必查看~/.cshrc

评论


显然,〜/ .MacOSX / environment.plist对某些人不起作用。在OS X的更改路径中,描述了使用文件夹/etc/paths.d的替代方法。我还没有测试过。

– Arjan
2010-12-18 19:35

+1代表〜/ .cshrc。疯了试图找出为什么〜/ .profile不起作用。

–tomlogic
2011年10月19日,下午6:31

我认为这个答案是不完整的。我试图找出错误(不存在)的路径在哪里:/ usr / bin / local,我的shell正在抱怨,并且不在任何这些文件中。

–汤米(Tommy)
16年8月19日在2:07

我认为无论您是否键入bash都会读取.bashrc。

– ZenUML.com上的Peng
18年6月7日在12:23

#2 楼

看一下/etc/paths使用的文件/usr/libexec/path_helper/etc/profile使用的文件。

对于MacPorts,使用sudo /etc/paths/opt/local/bin并重新打开终端窗口。

#3 楼

说真的,豹子给了我们一条新的道路。只需创建一个包含要添加的路径部分的文件,然后将其放入/etc/paths.d

一步即可完成的一个简单示例是:

echo "/some/path/to/add" >> /etc/paths.d/somefilename


否则,您可以转到/etc/paths.d并将文件直接放在那里。无论哪种方式,该目录中文件中的所有路径部分都将附加到默认路径。

也适用于manpath。

以下是更多详细信息的链接:

ars technica:如何在雪豹的PATH中添加一些内容?

第二点:MacPorts正是将所有内容放到opt目录中,因为苹果公司不使用它东西。这样就不会冲突。他们的指南(写得很好,BTW)解释了为什么使用opt以及如何根据需要更改默认值。

MacPorts指南

评论


来自SMcCandlish的评论:我必须同意,使用/ opt的MacPorts并没有什么奇怪或不好的地方(同样Fink使用/ sw);试图用来自外部项目的最新版本来替换Mac BSD的现有零件,这是导致无法使用系统且需要重新安装OS的秘诀。

– Sathyajith Bhat♦
2011年10月3日,10:12

#4 楼

要显示路径,请回显$ PATH。

echo $PATH


要设置路径,请编辑~/.bash_profile而不是~/.bash_login

#5 楼

还有ssh确定的路径。

比较echo $PATHssh localhost 'echo $PATH'。由于ssh不会读取/ etc / profile,因此/ usr / libexec / path_helper无法运行,因此/ etc / paths被跳过。现在尝试ssh localhost 'source /etc/profile; echo $PATH'。路径应该更近。其余的差异可能是由于.bash_profile(也被ssh跳过)和.bashrc(被ssh读取)中的路径修改所致。

如果您希望ssh路径相似到常规终端路径,可以将source /etc/profile添加到您的.bashrc中。

#6 楼

可以在以下任意一种中定义:


系统变量-/etc/paths

用户变量-参见@Steve Folly的说明


#7 楼

实际上,它存储在您的.profile文件中,而不是存储在.bash_login文件中,并且MacPorts经常使用它而不是.bash_login文件。

/opt目录通常由MacPorts创建,并且将其文件存储在此目录中。文件夹。

#8 楼

关于/usr/libexec/path_helper实用程序的文档,$ PATH的初始组件来自/etc/paths,默认情况下看起来像

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin


用于OS-X Snow Leopard