假設我們有兩個使用者:user1(管理員)和user2(標準使用者)
- 以 user1 登入
跑步
sudo su - user2 -c "env"
結果顯示$HOME=/home/user2
跑步
sudo su - user2 -c "echo $HOME"
結果顯示$HOME=/home/user1
這是為什麼?
答案1
這是因為在第二個範例中,變數$HOME
在 shell 執行命令之前被擴展,所以您真正運行的是
sudo su - user2 -c "echo /home/user1"
因為這就是變數$HOME
此時的值。
(我還猜測第二個命令的輸出不是真正的 $HOME=/home/user1
,而是只是/home/user1
)。
如果使用單引號,則可以防止第一個 shell 中的變數擴展:
$ sudo su - user2 -c 'echo $HOME'
/home/user2