【发布时间】:2020-04-28 14:22:09
【问题描述】:
我正在尝试使用 Cygwin 在我的 Windows 机器上运行一个 cronjob,它需要访问我在 ~/.bashrc 中定义的环境变量。这是我试图让它访问 env 变量的所有不同的东西:
- 简单的 bashrc 源码
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
SHELL=/usr/bin/bash
*/1 * * * * source ~/.bashrc ; env | grep "MAP60"
- 调用 bash 并运行命令
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
SHELL=/usr/bin/bash
*/1 * * * * /usr/bin/bash -c "source ~/.bashrc ; env | grep MAP60"
- 尝试 bash 登录 shell
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
SHELL=/usr/bin/bash
*/1 * * * * /usr/bin/bash -lc " source ~/.bashrc ; env | grep MAP60"
这些都不起作用,但是如果我将变量添加到我的 ~/.bash_profile 中,情况 3 会起作用。我还尝试使用完整路径采购 bashrc,并且还使用 .而不是源来调用文件。我也尝试过像案例 1 一样直接采购 bash_profile,但这也不起作用。我希望在 ~/.bashrc 中调用变量,而不是每次都调用登录 shell。如何使用 cygwin cron 实现这一目标?
【问题讨论】:
-
您的 .bashrc 是否可能在非交互模式下出错或跳过部分?您是否尝试过从 cron 作业中捕获错误输出?
/usr/bin/bash -lc " set -x; source ~/.bashrc ; env | grep MAP60" 2>/tmp.error.log怎么样
标签: bash cron environment-variables cygwin