macos上PATH环境变量的来源
自从安装了dotnet、mono后,就可以直接在终端上敲相应的命令。
但是它们既不在常规路径里(如/usr/local/bin/
之类),我也没有把它们添加到自定义的配置中,它们是怎么进入PATH
环境变量的呢?
dotnet位于
/usr/local/share/dotnet/dotnet
mono位于/Library/Frameworks/Mono.framework/Versions/Current/Commands
首先,自己的.bashrc
和.profile
里都没有
然后检查系统的/etc/bashrc
里面也没有
再看系统的/etc/profile
里,显然也不会有这些第三方工具的痕迹,但是却发现一个可疑的对象:
1 | if [ -x /usr/libexec/path_helper ]; then |
搜索得知原来就是这个path_helper
干的好事:
- 读
/etc/paths
,每一行都加到PATH
里 - 读
/etc/paths.d
下的每一个文件,每一行都加到PATH
里
打开本机上的paths.d目录一看,果然都齐齐整整在这里了:
1 | └──( ls /etc/paths.d/ |
参考:
https://scriptingosx.com/2017/05/where-paths-come-from/
http://www.softec.lu/site/DevelopersCorner/MasteringThePathHelper