【发布时间】:2018-04-09 12:36:17
【问题描述】:
我发现了这个相关的问题What does sudo -H do? 演示了 -H 与
的用法sudo -H bash -c 'echo $HOME $USER'
但我不明白为什么bash是必要的,因为echo命令可以独立运行,但运行
sudo -H echo $HOME $USER
将显示当前用户变量(而不是 root 的)。
那么为什么(在这种情况下)命令需要 bash 作为 sudo 参数运行以接受 -H 标志?
如果指定另一个用户也是如此,例如sudo -H -u anotheruser echo $HOME $USER。
【问题讨论】:
-
把
echo放在sudo -H echo $HOME $USER前面你就明白了。那里不需要bash,这是一种通过sudo启动的命令而不是当前shell 来评估$HOME的方法。 -
那么什么样的命令来做这个评估呢?显然echo 不行,是不是必须是能够创建交互式shell 的命令?