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

标签 linux bash sudo

我正在创建一个旨在以 super 用户身份运行的脚本,该脚本读取文件并代表所有用户运行多个脚本。重要的一点是:

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

当然,在 sudo 环境之外运行 source 是可行的。我认为可能存在 PATH 问题,我试图通过提供 source 的完整路径来绕过它。但是,我找不到可执行文件:which source 返回 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"

关于linux - Bash:从脚本中以用户身份获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512940/

相关文章:

linux - 免root安装TCL/TK

bash - 我怎样才能让所有的 tmux 面板都有自己独特的 shell 历史记录?

linux - 将命令行参数传递给 bash 中的另一个命令

java - 尝试每个标准 lib 选项后从 java 执行 sudo 命令

linux - 为什么在使用 cmp 指令时会出现段错误?

linux - BASH grep 模式文件名位于行尾

python - 如何在 Ubuntu 中以 sudo 权限运行 PyQt 应用程序并保持正常用户风格

python - 我怎样才能让我写的这个python面板正确地通过管道传输到dzen?

sudo - 除非以 sudo 启动,否则tigervncserver 会崩溃

ruby - Linux 服务器 sudo 命令未找到