bashrc에 정의된 환경 변수는 /bin/bash에 액세스할 수 없습니다.

bashrc에 정의된 환경 변수는 /bin/bash에 액세스할 수 없습니다.

/etc/bashrc다음 문제에서 변수를 정의했습니다 .

export VAR1=yadayada

아래에 다음 코드를 사용하여 bash 스크립트를 호출했습니다. => Python 스크립트를 시작하는 runner.sh또 다른 스크립트를 실행합니다 . run_test.shPython 스크립트는 위에서 언급한 env 변수를 사용합니다.

내용 은 다음과 같습니다 runner.sh.

#!/bin/bash
exec /home/john/run_test.sh

쉘에서 시작할 때 runner.shenv 변수가 정의되지 않았다는 오류가 발생합니다.

crontab에서 동일한 것을 실행하면 runner.shcrontab에도 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

관련 정보