未从 crontab 设置路径

Posted

技术标签:

【中文标题】未从 crontab 设置路径【英文标题】:Path not get set from crontab 【发布时间】:2015-11-12 09:12:42 【问题描述】:

非常简单,但无法正常工作。路径未设置。

crontab:

* * * * * source /home/inst1/.profile; /home/inst1/Scripts/test.sh > /home/inst1/Scripts/test.log 2>&1

.profile:

[..whatever..]
PATH=/tmp

export PATH

test.sh:

#!/usr/bin/bash

echo $PATH

cat to test.log 给了我:

 /usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin

我猜它与 AIX 环境有关,但我不知道 - 看起来很简单,但我在某处遗漏了一些东西。

【问题讨论】:

【参考方案1】:

试试这个:

* * * * * bash -c "source /home/inst1/.profile; /home/inst1/Scripts/test.sh" > /home/inst1/Scripts/test.log 2>&1

【讨论】:

谢谢。你能解释一下解决方案和尊重(为什么以我的方式不起作用)..? 那么sourcesh中的等价物是什么? source 切换到. 解决了这个问题而不使用bash -c "..." 好吧,奇怪。也许是 AIX 的 sh 的一个特性。 sh 不知道source,但如果sh 实际上是指向shell 的链接,例如bash,你仍然可以使用source。 POSIX 等效项是 .(只是一个句点)。【参考方案2】:

cron 默认使用/bin/sh,而source 不是POSIX shell 命令。您需要改用.

* * * * * . /home/inst1/.profile; /home/inst1/Scripts/test.sh > /home/inst1/Scripts/test.log 2>&1

【讨论】:

以上是关于未从 crontab 设置路径的主要内容,如果未能解决你的问题,请参考以下文章

crontab 提示 command not found 解决方案

linux命令crontab -l会显示当前crontab的内容,怎样才可以显示指定文件的路径

Crontab定时运行python程序

centos 7如何设置crontab?

crontab 未找到命令,问题解决【亲测】

crontab 定时任务没有响应 检测步骤