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
语句#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 $PATH
和ssh 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
评论
来自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