这个问题在这里已有答案:
我在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 回答
cron
作业在所有者's home directory, so that'中运行pwd
在运行时产生的结果 . 只需输入您想要的目录即可 .顺便说一下,你不能(可靠地)使用Bash语法
export variable=value
,因为Cron运行普通的sh
. 无论如何,应该不需要export
PATH
变量,因为它已经被导出,本来就是(它不能't work if it wasn't) .