cron(또는 launchd)이 명령을 실행하는 데 사용하는 환경에서 셸을 어떻게 열 수 있나요?

cron(또는 launchd)이 명령을 실행하는 데 사용하는 환경에서 셸을 어떻게 열 수 있나요?

나는 작업을 실행하기 위해 launchd(macOS의 크론 대체)를 시도하고 있습니다. sudo로 시작된 bash에서 명령을 실행하는 동안에는 작동하지 않습니다. 출력을 파일로 리디렉션하려고 시도했지만 확인해도 나에게 도움이 되지 않았습니다. 나는 launchd가 명령을 실행하는 데 사용하는 "원래" 환경에 액세스하여 그곳에서 직접 실험하고 무엇이 누락되었는지 확인할 수 있는 것을 좋아합니다.

추신: 이것은 내가 launchd 작업에서 (루트로) 실행하는 스크립트입니다.

#!/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각 줄 앞에 추가할 수 있습니다.

관련 정보