Shell

su - whoami 命令有什麼作用?

  • July 25, 2014

我在我的項目中執行一個腳本,我看到了這個命令

su - `whoami`

我有幾個基本問題:

  1. 這個命令有什麼作用?
  2. whoami 命令外的 `` 引號有什麼意義?
  3. 什麼是 - 用於?

我知道su代表切換使用者。

反引號 ( ````)命令替換:它們被在反引號內執行命令的結果替換。他們在這裡執行whoami,列印您的使用者名。

-aftersu makesu執行一個登錄 shell :登錄 shell將從頭開始讀取某些環境配置,等等。預設情況下,它只會將使用者的 shell 作為普通 shell 執行,這不會完成所有工作(請參閱連結)。

su總是啟動一個新的使用者會話,重新驗證使用者的身份,就好像他們從頭開始登錄一樣。任何來自外部的環境變數都會在內殼中清除。

所以所有這些都等同於命令(假設您在機器上的使用者名也是“ blunderboy”):

su - blunderboy

這意味著“將新會話重新驗證為 blunderboy 並執行登錄 shell”。

此命令的總體結果是像從頭開始一樣以目前使用者身份啟動新會話。為什麼要費心去做呢?可能會發現su: 特別是因為它啟動了一個新的使用者會話,所以它會發現使用者所在的組的任何更改,以及其他使用者或權限的更改,並且環境變數是全部重置。通常,將使用者添加到新組直到他們再次登錄才會生效¹:su為此目的再次登錄,因此它啟動的 shell 將使新組處於活動狀態。

¹這是一個簡化,但對於這個解釋來說足夠真實。

引用自:https://unix.stackexchange.com/questions/146511