私はタスクを実行するために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
前に追加できます。