我在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目录中的文件。
答案 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)
,因为它已经被导出了(如果不是这样的话,它就无法工作)。