如何在 cron(或者 launchd)用来执行命令的环境中打开 shell?

如何在 cron(或者 launchd)用来执行命令的环境中打开 shell?

我正在尝试让 launchd (这是 macOS 的 cron 替代品)来为我运行一项作业。它不起作用,而在使用 sudo 启动的 bash 上运行命令却可以。我尝试将输出重定向到文件,但检查它们也没有启发我。我喜欢访问 launchd 用于执行命令的“原始”环境,这样我就可以直接在那里进行实验,看看缺少什么。

PS:这是我在 launchd 作业中运行的脚本(以 root 身份):

#!/usr/bin/env bash
export HOME=/Users/evar
source /users/evar/.bashrc
/Users/evar/anaconda/bin/python /Base/_Code/Misc/hosts/updateHostsFile.py --auto --replace --backup &> /Users/evar/log/hosts.out2
# tmux new -d -s hosts "/Users/evar/anaconda/bin/python /Base/_Code/Misc/hosts/updateHostsFile.py --auto --replace --backup" # I tried this, but sudo tmux kept saying no sessions while logs kept said "duplicate session hosts".

答案1

在脚本的开头你可以做类似的事情

env > /tmp/myscriptrun_env.$$

这会将继承的环境放入/tmp.

现在,您可以从命令行使用该命令env -i /bin/sh生成具有全新环境的新 shell。在这个 shell 中,您可以保存您创建的source文件/tmp

您可能需要先编辑它并export在每行前面添加以更好地模仿启动的环境。

相关内容