Shellsu -
su - whoami
命令有什麼作用?
我在我的項目中執行一個腳本,我看到了這個命令
su - `whoami`
我有幾個基本問題:
- 這個命令有什麼作用?
- whoami 命令外的 `` 引號有什麼意義?
- 什麼是 - 用於?
我知道
su
代表切換使用者。
反引號 ( ````)是命令替換:它們被在反引號內執行命令的結果替換。他們在這裡執行
whoami
,列印您的使用者名。
-
aftersu
makesu
執行一個登錄 shell :登錄 shell將從頭開始讀取某些環境配置,等等。預設情況下,它只會將使用者的 shell 作為普通 shell 執行,這不會完成所有工作(請參閱連結)。
su
總是啟動一個新的使用者會話,重新驗證使用者的身份,就好像他們從頭開始登錄一樣。任何來自外部的環境變數都會在內殼中清除。所以所有這些都等同於命令(假設您在機器上的使用者名也是“
blunderboy
”):su - blunderboy
這意味著“將新會話重新驗證為 blunderboy 並執行登錄 shell”。
此命令的總體結果是像從頭開始一樣以目前使用者身份啟動新會話。為什麼要費心去做呢?可能會發現
su
: 特別是因為它啟動了一個新的使用者會話,所以它會發現使用者所在的組的任何更改,以及其他使用者或權限的更改,並且環境變數是全部重置。通常,將使用者添加到新組直到他們再次登錄才會生效¹:su
為此目的再次登錄,因此它啟動的 shell 將使新組處於活動狀態。¹這是一個簡化,但對於這個解釋來說足夠真實。