
當我 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。