我有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
没有传递给工作脚本?
答案 0 :(得分:0)
您假设cron在特定目录中执行脚本的问题。实际上执行该目录的目录可能不是您想要的目录。
在上面的示例中,脚本在/home/user
中执行。如Leo所述,如果config.sh
在该目录中,则它应该可以工作。