我正在尝试启动 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".
在脚本的开头,您可以做类似的事情
这会将继承的环境放入
/tmp
.现在,您可以从命令行使用该命令
env -i /bin/sh
生成具有全新环境的新 shell。在这个 shell 中,您可以使用您创建source
的文件。/tmp
您可能想先编辑它并
export
在每行前面添加以更好地模拟启动环境。