该脚本crontab使用参数运行:
/usr/spool/cron/crontab/root
@reboot /path/to/script
观察到一个有趣的功能,并非所有环境变量都存在,其中一个主要$USER是空的,您必须手动定义它:
脚本
#!/usr/bin/env bash
...
export USER=$(id -un)
...
为此还有一些缺失的方法$PATH,我加载了缺失的:
#!/usr/bin/env bash
source /etc/profile
...
在哪个引导阶段可以使用完整范围的环境变量?在启动由 运行的脚本之前是否值得等待 N 秒cron?
“引导步骤对环境变量的影响”这个问题完全没有意义。毕竟:
关于环境变量
USER。详细。简而言之:LOGNAME./bin/login通常,它们从程序(或其模拟类型xsession等)进入用户进程的环境变量(通过从“父”到“子”的继承)。LOGNAME以免启动其他过程。关于环境变量
PATH。它的最小默认值由cron程序本身设置。但通常维护人员会在cron程序的全局配置文件中覆盖它(输出可能因系统而异):
如有必要,您可以在您的用户crontab文件(由 command 编辑)中以相同的方式重新定义它
$ crontab -e。(同时,您也可以在那里定义一个变量。请记住,不会执行crontabUSER文件中的变量替换。您必须明确指定它:)USER=vasja