【问题标题】:su commands in a script executed as root seem inconsistent以 root 身份执行的脚本中的 su 命令似乎不一致
【发布时间】:2017-10-01 18:24:43
【问题描述】:

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

~$ cat test.sh

输出

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

~$ sudo ./test.sh

输出

user
/root

为什么第一个“su”命令似乎以“用户”身份运行,而第二个命令似乎以“root”身份运行?

【问题讨论】:

标签: linux bash unix su quoting


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2011-10-25
    相关资源
    最近更新 更多