未从 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
【讨论】:
谢谢。你能解释一下解决方案和尊重(为什么以我的方式不起作用)..? 那么source
在sh
中的等价物是什么?
将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 解决方案