采购外部bash脚本时crontab不起作用

时间:2018-06-24 12:24:46

标签: bash cron

我有crontab,我需要它在此bash脚本中获取全局bash 我导出其他脚本中使用的Global EVN变量 问题是,当我从crontab脚本调用脚本时,它会忽略 导出全局EVN变量。

这是config.sh,其路径为:/home/user/scripts,我无法将其移动到其他目录。

#!/bin/bash
PATH=$PATH:/home/user/.local/bin:/home/user/bin:$PWD
#Tests path
export MAIN_PATH=/home/user/setup/work

还有crontab脚本

#!/bin/bash
PATH=$PATH:/home/user/.local/bin:/home/user/bin:$PWD

source $PWD/config.sh

#remove previous crontab
crontab -r
#set crontab
(echo "27 11 * * * $MAIN_PATH/run-from-crontab.sh") | crontab -
#print loaded crontab
sudo crontab -u user -l

在run-from-crontab.sh中

#!/bin/bash

PATH=$PATH:/home/user/.local/bin:/home/user/bin:$PWD

source $PWD/config.sh

$MAIN_PATH/scripts/test.sh

目前,我希望MAIN_PATH将保留导出的MAIN_PATH值 但我得到了:

/home/user/setup/work/scripts/run-from-crontab.sh: line 3: /home/user/config.sh:
No such file or directory                                                                                             
chmod: cannot access ‘//scripts’: No such file or directory 

为什么MAIN_PATH没有传递给工作脚本?

1 个答案:

答案 0 :(得分:0)

您假设cron在特定目录中执行脚本的问题。实际上执行该目录的目录可能不是您想要的目录。

在上面的示例中,脚本在/home/user中执行。如Leo所述,如果config.sh在该目录中,则它应该可以工作。