Environment-Variables
/etc/login.defs: ENV_PATH & ENV_SUPATH vs PATH
用於
/etc/login.defs
什麼ENV_PATH
用途ENV_SUPATH
?來自
/etc/login.defs
:# REQUIRED The default PATH settings, for superuser and normal users. # # (they are minimal, add the rest in the shell startup files) ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PATH
它們似乎預設為我在/etc/profile
Debian Jessie中使用的完全相同的初始路徑值。- 在 man 中,它非常簡短地說明了 login.defs的用途。這個頁面說得更多。
PATH
並且ENV_PATH
似乎沒有相互聯繫或相互依賴,或者如果它們是相互依賴的,對我來說並不明顯。**我需要在這兩個地方更新我的 bash 系統路徑嗎?**或者有沒有辦法只在一個地方定義路徑,並引用這個主路徑值?
PATH
或者也許這些只是在缺少的情況下用作預設值?…所以他們真的沒那麼重要???
引用有關login.defs的手冊頁
ENV_PATH (string) 如果設置,它將用於定義普通使用者登錄時的 PATH 環境變數。該值是一個冒號分隔的路徑列表(例如 /bin:/usr/bin),並且可以在 PATH= 前面。預設值為 PATH=/bin:/usr/bin。
ENV_SUPATH (string) 如果設置,它將用於定義超級使用者登錄時的 PATH 環境變數。該值是一個冒號分隔的路徑列表(例如 /sbin:/bin:/usr/sbin:/usr/bin),並且可以在 PATH= 前面。預設值為 PATH=/sbin:/bin:/usr/sbin:/usr/bin。
兩者最初都用於定義正常超級使用者的 PATH 變數。我的 login.defs 將 ENV_PATH、ENV_SUPATH 定義為以下
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
我添加了一個新使用者 ‘foo’
sudo useradd foo sudo passwd foo Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
當我以“foo”身份登錄時
foo@naga-playground:/$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
同樣對於“根”
root@naga-playground:/home/pi/# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
使用者可以通過 .bashrc、.bash_profile、.zshrc … 覆蓋 PATH
為了使答案完整
ENV_PATH 用於為普通使用者
定義 PATH ENV_SUPATH 用於為超級使用者定義 PATH