Bash:从脚本中以用户身份获取文件

Bash: sourcing file as user from script

我正在创建一个脚本,作为超级用户 运行 读取文件,并 运行 代表所有用户执行一些脚本。重要的一点是:

sudo -u $user -H source /home/$user/list_of_commands

但是,无论我是否用引号括起命令,都会失败:

sudo: source /home/user/list_of_commands: command not found

我什至尝试过使用 . bash 内置:

sudo: . /home/user/list_of_commands: command not found

当然 运行宁 sourcesudo 环境之外工作。我认为可能存在 PATH 问题,我试图通过提供 source 的完整路径来绕过它。但是,我找不到可执行文件:which source returns which: no source in (/usr/local/sbin:usr/local/bin:usr/bin)。所以我卡住了。

如何以用户身份将脚本源文件制作成文件?

source 是一个内建命令而不是命令,与 bash -c:

一起使用
sudo -u $user -H bash -c "source /home/$user/list_of_commands"