我正在尝试让 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
在每行前面添加以更好地模仿启动的环境。