標籤:全路徑 目錄 通用 錯誤 conf bsp bash 名稱 https
有很多指令都只可以用 root 身份去執行,因此我們需要成為 root 使用者。要這樣做,我們可以使用 su 指令(更替使用者)。su 指令有下列格式:
su - <user>
或
su <user>
但我們最經常是用 su 指令來成為 root 使用者:
su - root
或
su root
如果不指定使用者名稱稱,預設的使用者是 root,因此以上的指令可以縮短為:
su -
或
su
然而這兩個指令有不同的特性。‘su <user>‘ 將 <user> 這個身份賦予現時的使用者;而 ‘su- <user>‘ 除了將 <user> 的身份賦予現時的使用者之外,更會將環境設定成 <user> 登入時的環境。很多時候,使用者會單單採用 ‘su‘ 來成為 root,嘗試執行一個指令(例如:ifconfig),然後收到一個 ‘command not found‘ 的錯誤。舉個例子:
su
Password:
ifconfig
bash: ifconfig: command not found
原因是系統上的普通使用者與 root 使用者有不同的 PATH 環境變數。當你輸入一個 Linux 指令,指令殼會嘗試在使用者的 PATH 內尋找及執行那個指令。它會尋找 PATH 變數內的每個目錄直至找到配對。
很多時候當使用者在 IRC 或其它地方彙報問題時,他們會被導向此頁。當你要檢測為何找不到某個執行檔時,查看現有的 PATH 很有協助:echo $PATH
為普通使用者而設的指令多數位於 /usr/bin 及 /bin,偶爾也會在 /usr/local/bin —— 上遊在封裝時預設不會採用 /usr/local/* 路徑。然而,root 的指令多數位於 /usr/sbin 及 /sbin,偶爾也會在 /usr/local/sbin。這亦反映在 root 的 PATH 內。
當你用 su - 來變成 root 時,你亦會採納 root 的 PATH;反觀只用 su 就會保留使用者的 PATH 值。正因如此,單單用 su 來成為 root 時,執行/usr/local/sbin/、/usr/sbin、或 /sbin 內的指令便會導致 command not found 這個錯誤。要獲得更詳細的解釋,請參閱 bash 的使用手冊(man bash),特別是有關 INVOCATION 及登入指令殼這個部份。
因此你假若只使用 su,便須要提供指令的全路徑(例如:/sbin/ifconfig),否則請使用su - 來成為 root。
---------------------
蹣跚走路的程式猿
來源:CSDN
原文:16973481
著作權聲明:本文為博主原創文章,轉載請附上博文連結!
centos su命令