在 sudo 下的变量中运行命令

在 sudo 下的变量中运行命令

我正在尝试编写一个脚本,该脚本以不同的用户身份运行命令,但在我自己的 .bashrc 设置的环境下。我希望该脚本适用于我们整个团队。

这是我尝试从 sudo 获取 .bashrc 文件:

homedir=$(echo ~)
cmd="source $homedir/.bashrc; <SOME COMMAND>"
sudo -u <other_user> bash -c $cmd

我收到错误:

<my_home_dir>/.bashrc: line 0: source: filename argument required
source: usage: source filename [arguments]

但是,当我直接指定 soruce 命令而不是将其保留在$cmd变量中时,我没有收到错误。也就是说,以下代码片段可以完美运行:

sudo -u <other_user> bash -c 'source <my_home_dir>/.bashrc; <SOME COMMAND>'

问题的根源是什么?如何使脚本通用,而不让每个团队成员指定自己的主目录?

(用户名和主目录被故意混淆)

答案1

正确使用变量建议使用"${cmd}"而不是$cmd.这""正是您所缺少的。通过使用 bash 本身的 --rcfile 参数,您的整个努力可能会稍微更优雅地得到解决。

相关内容