/etc/bashrc
다음 문제에서 변수를 정의했습니다 .
export VAR1=yadayada
아래에 다음 코드를 사용하여 bash 스크립트를 호출했습니다. => Python 스크립트를 시작하는 runner.sh
또 다른 스크립트를 실행합니다 . run_test.sh
Python 스크립트는 위에서 언급한 env 변수를 사용합니다.
내용 은 다음과 같습니다 runner.sh
.
#!/bin/bash
exec /home/john/run_test.sh
쉘에서 시작할 때 runner.sh
env 변수가 정의되지 않았다는 오류가 발생합니다.
crontab에서 동일한 것을 실행하면 runner.sh
crontab에도 env 변수가 정의되어 있어 모든 것이 올바르게 진행됩니다.
쉘 실행에서 env 변수를 "수집"하지 않는 이유 bashrc
와 이를 수정하는 방법을 설명해 주시겠습니까?
답변1
이 시도,
/etc/bashrc를 편집한 후(그런데 Linux 버전이 무엇입니까? 저는 보통 ~/.bashrc에 이와 같은 내용을 직접 넣습니다) 다음 명령을 실행해 보십시오.
source /etc/bashrc
그런 다음runner.sh 스크립트를 실행하십시오.
이제 실행
set
환경 변수가 목록에 표시되는지 확인하는 명령입니다.
답변2
나는 당신이 하고 있는 것과 똑같은 일을 하려고 노력했는데, 내 시스템에서는 잘 작동했습니다. Python을 사용하여 환경 변수에 어떻게 접근하려고 합니까? pyhton이 os.environ 메서드를 사용하고 있는지 확인하세요.
환경변수를 먼저 확인해보세요
[john@tilki ~]$ grep VAR /etc/bashrc
export VAR1=bla
[john@tilki ~]$ env | grep VAR
VAR1=bla
스크립트의 내용
[john@tilki ~]$ cat runner.sh
#! /bin/bash
echo $VAR1
python print_var.py
[john@tilki ~]$ cat print_var.py
import os
print os.environ['VAR1']
run.sh 스크립트를 실행하세요
[john@tilki ~]$ ./runner.sh
bla
bla