Macos Mac OS X上的cron命令中未通过源命令扩展路径
我刚刚安装了Mac OS X。我不想使用launchd。出于某种原因,当我在cron命令中生成.bash_概要文件时,路径不会更新。但是,当在shell上运行相同的cron命令时,路径会更新。在cron命令中手动更新路径也可以 因此,此cron行更新Macos Mac OS X上的cron命令中未通过源命令扩展路径,macos,shell,cron,crontab,Macos,Shell,Cron,Crontab,我刚刚安装了Mac OS X。我不想使用launchd。出于某种原因,当我在cron命令中生成.bash_概要文件时,路径不会更新。但是,当在shell上运行相同的cron命令时,路径会更新。在cron命令中手动更新路径也可以 因此,此cron行更新路径: 34 03 * * * PATH=~/anaconda/bin:$PATH ; echo $PATH 而这个cron行: 34 03 *
路径
:
34 03 * * * PATH=~/anaconda/bin:$PATH ; echo $PATH
而这个cron行:
34 03 * * * source $HOME/.bash_profile ; echo $PATH
显示以下结果:
From anicca@terrences-mbp.home Thu Sep 25 03:40:01 2014
X-Original-To: anicca
Delivered-To: anicca@terrences-mbp.home
From: anicca@terrences-mbp.home (Cron Daemon)
To: anicca@terrences-mbp.home
Subject: Cron <anicca@terrences-mbp> source $HOME/.bash_profile ; echo $PATH
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=anicca>
X-Cron-Env: <USER=anicca>
X-Cron-Env: <HOME=/Users/anicca>
Date: Thu, 25 Sep 2014 03:40:00 -0400 (EDT)
/Users/anicca/bin:/usr/local/bin:/usr/bin:/bin
source
内置命令无法按您希望的方式从cron运行,因为cron守护进程从主目录启动子shell来运行作业source
命令仅防止在该子进程内派生另一个子shell
您应该从cron启动shell脚本,例如
34 03 * * * /path/to/my/script.sh
在
script.sh
中,您应该设置所需的环境。这里有一个脚本,您可以使用它来生成.bashrc或.bash_配置文件,然后执行命令行:
#!/bin/bash -x
source ~/.bash_profile
echo "CMDLINE: $@"
echo "PATH: $PATH"
eval $@
#!/bin/bash -x
source ~/.bash_profile
echo "CMDLINE: $@"
echo "PATH: $PATH"
eval $@