我的 Ubuntu 22.04 系統上有兩個名為 Alice 和 Sally 的使用者。 Alice 已在 .profile 檔案中配置了她的環境變量,而這些變數對她來說正常運作。但是,當 Alice 使用指令 sudo -s -u sally 切換到使用者 Sally 時,Alice 的 .profile 中的環境設定不會反映給 Sally。
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
我已經驗證 .profile 檔案存在於 Sally 的主目錄中並且具有必要的配置。我想了解為什麼當 Alice 使用 sudo -s -u sally 切換到她的使用者時,環境變數並沒有應用於 Sally。是否需要任何額外的步驟或配置來確保以這種方式切換使用者時保留環境設定?
答案1
~/.profile
源自使用者登入...因此,sudo -u user
您需要使用-i, --login
“將目標使用者的密碼資料庫條目指定的 shell 作為登入 shell 運行”,如下所示:
sudo -i -u sally
注意:您不能同時指定-i
和-s
選項。
但是,如果您想保留目前使用者對 shell 的選擇,那麼您可以sudo su ...
像這樣使用:
sudo su - sally --shell "$SHELL"
或指定您選擇的 shell,/bin/bash
例如:
sudo su - sally --shell /bin/bash
無論目標使用者的密碼資料庫條目指定的是哪個 shell。