Debian
從“su -”而不是“su root”找到的命令
作業系統:Debian 10.10
我搜尋以了解為什麼當我使用“su -”啟動時會執行“usermod”命令,但是當他從“su root”啟動時,命令是“bash: usermod: command not found”。
謝謝!
su
命令不-
保留您現有的環境,並且僅將您切換到使用者而不載入他的所有環境變數。
su -
將模擬使用者登錄,不僅將您切換到使用者,還會載入他的環境變數。從
man su
-, -l, --login Start the shell as a login shell with an environment similar to a real login: o clears all the environment variables except TERM and variables specified by --whitelist-environment o initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH o changes to the target user's home directory o sets argv[0] of the shell to '-' in order to make the shell a login shell
在這種情況下,您可能不會載入根使用者的 PATH 變數中的所有元素。
輸入
echo $PATH
後輸入su root
,輸入後你su -
可能會在su -
命令後的 PATH 中有額外的文件夾。
usermod
command 應該是 in/usr/sbin
,這是只對超級使用者可用的路徑,裡面的命令/sbin
用於/usr/sbin
管理目的,並且只能由管理使用者而不是普通使用者執行。你可以使用
type usermod
orwhich usermod
並看到它usermod
在路徑上/usr/sbin/usermod
,你可能不會在after/usr/sbin
的輸出中,但會在命令之後將它放在 PATH 變數中echo $PATH``su root``su -
/sbin 與 /bin 一樣,此目錄包含啟動系統所需的命令,但通常不會由普通使用者執行。
/usr/sbin 這個目錄包含用於系統管理的程序二進製文件,它們對於引導過程、掛載 /usr 或系統修復不是必需的。