为什么 sudo su 和 bash 根脚本路径不同?

为什么 sudo su 和 bash 根脚本路径不同?

管理员说明:这个问题与为什么 sudo 路径不同于 su 不同,因为从 cron 运行的 bash 脚本中的环境变量似乎不会从为用户设置为 sudo 或 su 的环境变量中继承。 (查看 BUT 之后的所有内容。)

运行 sudo su 并显示路径时,我的路径中有 /usr/local/bin 。我将几个自定义应用程序放入该文件夹中,目的是使它们在系统范围内可用。在 etc/sudoers 中,/usr/local/bin 位于 secure_path 中。

当通过 cron 作业运行以 root 身份执行的 bash 脚本时,/usr/local/bin 显然没有保留在路径中,因为在尝试运行安装在那里的应用程序时,我得到命令未找到,尽管它们位于 /etc 中/sudoers。

如何才能获得这些应用程序的 root 权限?

乌班图16.10

答案1

正如您所看到的,作业中的环境与or或cron调用的 shell 中的环境不同。但是,您可以在 cron 表中设置变量:su -sudo -ssudo /path/to/executable

PATH="$PATH:/usr/local/bin"
0 0 * * * /path/to/run-me-at-midnight-with-path-changes.sh

相关内容