以root身份执行的脚本中的su命令似乎不一致

时间:2017-10-01 18:24:43

标签: linux bash unix su quoting

我试图了解如何在具有root权限的脚本中从我的用户帐户运行命令。我有这个测试脚本,输出让我感到困惑。

〜$ cat test.sh

输出

#!/usr/bin/bash
su -c "whoami" user
su -c "echo $HOME" user

〜$ sudo ./test.sh

输出

user
/root

为什么第一个' su'命令似乎以' user'但第二个似乎是以' root'?

运行

1 个答案:

答案 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