我正在尝试编写一个脚本,该脚本以不同的用户身份运行命令,但在我自己的 .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 参数,您的整个努力可能会稍微更优雅地得到解决。