Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu中带有reading.bashrc的Cron任务_Bash_Cron_Sh - Fatal编程技术网

Ubuntu中带有reading.bashrc的Cron任务

Ubuntu中带有reading.bashrc的Cron任务,bash,cron,sh,Bash,Cron,Sh,如何轻松优雅地将环境变量从.bashrc传递到cron任务 我读过很多例子,但不知怎么的,它似乎不适合我。为什么我不能在bash shell的.bashrc或.bashprofile中使用加载的环境变量执行cron任务?我只能成功地使用sh shell。在Ubuntu18.04.1LTS仿生版和Ubuntu16.04.5LTS xenial版上测试 MAILTO=root HOME=/ BASH_ENV=/root/.bashrc SHELL=/bin/bash */1 * * * * . $

如何轻松优雅地将环境变量从.bashrc传递到cron任务

我读过很多例子,但不知怎么的,它似乎不适合我。为什么我不能在bash shell的.bashrc或.bashprofile中使用加载的环境变量执行cron任务?我只能成功地使用sh shell。在Ubuntu18.04.1LTS仿生版和Ubuntu16.04.5LTS xenial版上测试

MAILTO=root HOME=/
BASH_ENV=/root/.bashrc

SHELL=/bin/bash
*/1 * * * * . $BASH_ENV; echo $EDITOR > /var/log/supervisor/out.log 2>&1 --> **Doesn't work**

SHELL=/bin/sh
*/1 * * * * . $BASH_ENV; echo $EDITOR > /var/log/supervisor/out.log 2>&1 --> **WORKS**

SHELL=/bin/sh
*/1 * * * * source $BASH_ENV; echo $EDITOR > /var/log/supervisor/out.log 2>&1 --> **Doesn't work**

SHELL=/bin/sh
BASH_ENV=/root/.my_env
*/1 * * * * echo $EDITOR > /var/log/supervisor/out.log 2>&1 --> **WORKS**
我尝试过的还有很多,我几乎无能为力,只能优雅地使用(不使用source.bashrc编写手工制作的sctipt),最好的答案是只在.bashrc上使用BASH_ENVon.bashrc,但它只适用于我手工编写的ENV文件

另外,我在.bashrc中找到了一行,它告诉我们。可能它与bash shell中的.bashrc有冲突,因此无法读取。但是为什么它能和sh shel一起工作呢

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
如果文件在非交互式shell中运行,则将停止对该文件的求值

也许是那些能够轻松执行的人。bashrc没有使用Ubuntu发行版

我发现这对Ubuntu很有帮助,但是
eval“$(cat~/.bashrc | tail-n+10)”
是一种非常难看且复杂的绕过它的方式

,因为您运行的是哪个用户?此外,这是一个用户cronjob文件还是
/etc/crontab
/etc/cron.d
?除此之外,不需要编写
*/1
,但
*
就足够了。是的
[-z“$PS1”]&返回
不是一个好办法。也许可以看看@kvantour,我正在根目录下运行(在我的docker容器中)。所有内容都在用户的crontab下编辑。只需编写crontab-e