Bash
debian su - 和 su $PATH 的區別?
$ su - Password: # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # exit logout $ su Password: # echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
我不知道為什麼 /bin 和 /sbin 沒有添加到
$PATH
,如果我做普通的 su. 這曾經是這樣的。我怎樣才能解決這個問題?我確實注意到:-rw-r--r-- 1 root root 0 Jan 8 2018 /etc/environment
但除此之外,我的系統似乎正常。
編輯:我忘記了強制性的
uname -a
Linux rpi3 4.17.0-1-arm64 #1 SMP Debian 4.17.8-1 (2018-07-20) aarch64 GNU/Linux
編輯2:
$ cat /etc/issue Debian GNU/Linux buster/sid \n \l
所有軟體包都來自“測試”儲存庫,因為“穩定”的軟體包在 aarch64 上效果不佳。
最近(2018 年 7 月 27 日的 2.32-0.2 版本
util-linux
)Debian 切換到不同的su
實現,請參閱錯誤 833256。“新”su
來自util-linux
,而“舊”則包含在login
包裝中並起源於src:shadow
這兩個實現非常相似,但有一些細微差別(當然可能還有更多尚未註意到的差異),例如
- 新的“su”(沒有參數,即在保留環境時)也保留 PATH 和 IFS,而舊的 su 即使在“保留環境”模式下也會始終重置 PATH 和 IFS。
- su ’’ (空的使用者字元串) 用於給 root,但現在返回錯誤。
- 以前 su 只有一個 pam 配置,但現在 ‘su -’ 在 /etc/pam.d/su-l 中單獨配置
第一個區別可能是使用者最容易看到的。出於多種原因,使用普通的“su”是一個非常糟糕的主意,因此強烈建議使用“su -”來始終獲得類似於正常登錄的新設置環境。如果您想恢復與前一個更相似的行為,您可以在 /etc/login.defs 中添加“ALWAYS_SET_PATH yes”。
先前使用的
su
實現在PATH
. 此錯誤報告中也對此進行了討論,請參閱833256#80。如果不使用 呼叫,則newsu
保留。PATH``su -
簡而言之:Debian 的舊版本
su
表現得像. 使用新的實現,你應該幾乎總是使用,類似於其他發行版。su -``PATH``su -