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
当然 运行宁 source
在 sudo
环境之外工作。我认为可能存在 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"
我正在创建一个脚本,作为超级用户 运行 读取文件,并 运行 代表所有用户执行一些脚本。重要的一点是:
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
当然 运行宁 source
在 sudo
环境之外工作。我认为可能存在 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"