当我 echo $PATH 时,我得到这个:Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
。
我想从中删除一些路径,但是当我使用命令打开文件时vim /etc/paths
,我得到以下结果:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
文件 /etc/paths 与 $PATH 变量是否不同?
答案1
/etc/paths
是用于设置$PATH
shell 进程的一部分。当您打开新的终端窗口时,它会启动bash
,并运行多个启动脚本:/etc/profile
AND ~/.bash_profile
OR(如果不存在)~/.bash_login
OR(如果也不存在)~/.profile
。这些脚本设置 shell 环境,包括$PATH
.
所做的事情之一/etc/profile
是运行/usr/libexec/path_helper
,它读取/etc/paths
中的任何文件/etc/paths.d
,并将其内容添加到$PATH
.但这只是一个起点;您自己的启动脚本(如果存在)可以添加$PATH
、编辑、完全替换等。
在我看来,您的启动脚本(和/或它运行的东西)正在将许多条目添加到它从/etc/paths
. “Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:”添加到开头$PATH
(意味着将首先搜索这些目录),并且“:/Users/mac/Library/Android/sdk” /platform-tools:/platform-tools" 添加在末尾。如果您想确切地知道添加它们的内容,您需要查看启动脚本。
顺便说一句,这个设置过程$PATH
仅适用于 bash“登录”shell。 bash shell 运行的任何内容都将从$PATH
它继承,因此可能本质上具有相同的内容。 bash 非登录 shell 遵循稍微不同的设置过程。其他 shell 以及根本不从 shell 启动的事物(例如 cron 作业)可能具有完全不同的$PATHs
.
答案2
我首先要检查修改的地方是,
~/.profile
~/.bashrc
~/.bash_profile
如果您使用的不是 Bash,请检查其配置文件以查看是否提及 PATH。