cron(またはlaunchd)がコマンドを実行するために使用する環境でシェルを開くにはどうすればよいですか?

cron(またはlaunchd)がコマンドを実行するために使用する環境でシェルを開くにはどうすればよいですか?

私はタスクを実行するためにlaunchd(macOSのクローンを置き換える)を試しています。 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新しい環境で新しいシェルを作成できるようになりました。このシェルでは、作成したsourceファイルを保存できます/tmp

起動する環境をよりよく模倣するために、まず編集して各行のexport前に追加できます。

関連情報