Cron:从shell脚本设置PATH不起作用

时间:2016-05-24 09:25:46

标签: linux shell path cron

我在centOS中编写了一个简单的shell脚本,并从一个cron作业执行。 我的脚本如下所示:

#!/bin/bash

export PATH=$PATH:$(pwd) 
echo $PATH
echo $PATH| mail -s "PATH" me@gmail.com

如果我直接从终端执行此脚本,则输出如下:

/sbin:/bin:/usr/sbin:/usr/bin:/vagrant

其中/ vagrant是我预期的那个。

但如果这是从cron作业执行的,它会输出(在我的邮件中),如:

/usr/bin:/bin:/root

从cron作业执行时如何正确设置/ vagrant?

更新:我可以将/ vagrant设置为PATH,但它只适用于我。如果我将脚本部署到其他用户,则必须创建此目录。所以我想让脚本像它一样从它运行的位置导出位置。

在我的情况下,我的脚本从/ vagrant运行,但当前目录正在导出为/ root。这就是问题所在。

更新:遗憾的是,路径已正确导出,但报告找不到/ vagrant目录中的文件。

1 个答案:

答案 0 :(得分:1)

cron作业在所有者的主目录中运行,以便pwd在运行时产生的结果。只需放置您想要的目录。

PATH=$PATH:/vagrant

顺便说一句,您无法(可靠地)使用Bash语法export variable=value,因为Cron运行普通sh。无论如何,export PATH变量不应该@(dModels: Seq[(dModel, Seq[dModelCondition])])(implicit request: RequestHeader, messages: Messages, loggedUser: User) ,因为它已经被导出了(如果不是这样的话,它就无法工作)。