![sudo 登入和提示顯示的差異](https://rvso.com/image/1555402/sudo%20%E7%99%BB%E5%85%A5%E5%92%8C%E6%8F%90%E7%A4%BA%E9%A1%AF%E7%A4%BA%E7%9A%84%E5%B7%AE%E7%95%B0.png)
sudo -s
和之間有什麼差別sudo -i
,為什麼他們給我不同的 shell?它似乎-s
將我留在內心bash
並-i
給我sh
。
在 MacOSX High Sierra 10.13 上,如果我sudo -s
在終端機中鍵入並輸入密碼,我會得到 root 作為我的用戶名,但在提示符處帶有美元符號:
user1@mymachine:~$ sudo -s
**root@mymachine:~$**
但如果我輸入sudo -i
,我會得到:
user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**
如果我是上面範例中的 root,為什麼我沒有看到井號 # sudo -s
?我不是真正的root嗎?
兩者的環境變數是否不同?
答案1
您需要意識到的第一件事是sudo -s
相當於sudo -s root
且sudo -i
相當於sudo -i root
。每當您從 sudo 中省略使用者時,它都會假定您的目標是 root 使用者。
sudo -s
以目標使用者身分執行 shell,同時sudo -i
以目標使用者登入。
每當您執行時,sudo -s
您實際上是將 shell 變更為 root 使用者 shell,而每當您執行時,您sudo -i
實際上是登出目前使用者並以 root 身分登入。了解這一點很重要,因為每當您將 shell 更改為 root 使用者 shell 時,您仍然會保留使用者匯出資訊。當您執行時,sudo -i
您將登出您的使用者並以 root 身分登入。這表示您採用 root 使用者的 shell 配置。
這是不相關的,但你應該避免將用戶更改為 root,因為你可能會意外破壞東西,你應該只對每個需要升級的命令進行 sudo,即使它變得煩人。如果您確實想變更為 root shell,則應該執行該命令su
,這將允許您以 root 身分登入。