我试图了解如何在具有root权限的脚本中从我的用户帐户运行命令。我有这个测试脚本,输出让我感到困惑。
〜$ cat test.sh
输出:
#!/usr/bin/bash
su -c "whoami" user
su -c "echo $HOME" user
〜$ sudo ./test.sh
输出:
user
/root
为什么第一个' su'命令似乎以' user'但第二个似乎是以' root'?
运行答案 0 :(得分:1)
双引号扩展shell变量。尝试
echo su -c "echo $HOME" user
看看我的意思。它是运行扩展$HOME
的脚本的shell,它以root身份运行(来自sudo ./test.sh
)。所以最终运行的是su -c 'echo /root' user
。
你想要
su -c 'echo $HOME' user
我们将echo $HOME
未展开传递给su -c
。