答案1
如果“which”可以找到可执行文件,那么运行 cron 命令的 shell 解释器也可以找到。所以我不明白你为什么要为此使用“which”。但也许你有一些不明显的原因。
'which' 命令使用 $PATH 中列出的目录来搜索命令的第一次出现。很可能 PATH 的设置与您所想的并不相符。尝试将 '/usr/bin/env >> /home/user/you/env.txt' 添加到您的 crontab 中,以便今天(一分钟后)运行。然后查看 /home/user/you/env.txt 以查看 PATH 的设置。如果该 PATH 不适合您,您可能必须将所有命令放在一个小的 shell 脚本中,您可以在其中自行设置 PATH。您还可以在该 env.txt 文件中查找其他导出的环境变量,因为这可能会派上用场,具体取决于您想通过 crontab 执行的操作。
答案2
git 实际位于哪里(即,如果您/usr/bin/which git
从控制台运行,它会打印什么)?如果它不在 $PATH 目录中(在我的 Snow Leopard 机器上只是 /usr/bin 和 /bin),则/usr/bin/which
找不到它,您需要对其进行硬编码或添加一行,例如
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
到 crontab 文件。
答案3
这能起到作用吗?
/usr/bin/env git
env 命令负责查找命令,并且它本身始终位于 /usr/bin 中(我被告知...)这是 Python 脚本中的一个常见技巧,由于不同的发行版将 python 放在不同位置,所以这是必要的,但没有人愿意费力寻找位置。