Bash 환경 변수는 어디에서 초기화됩니까?

Bash 환경 변수는 어디에서 초기화됩니까?

내가 실행할 때 :

echo $PYTHONPATH

명령줄에서 다음과 같은 출력을 얻습니다.

/home/nehal/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages:/home/nehal/anaconda3/lib/python3.6/site-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s

파일을 확인해 보니 세트가 1개 .bashrc뿐인 것으로 나타났습니다.PYTHONPATH

export PYTHONPATH="/home/nehal/anaconda3/lib/python3.6/site-package‌​s:$PYTHONPATH"

나도 확인해봤는데 .profile어디 에서도 찾을 수 /etc/environment없었어 ./etc/profilePYTHONPATH

내 질문은 위의 추가 경로가 어디에서 오는가입니다.

답변1

어떤 파일이 열려 있는지 추적하여 bash가 어떤 파일을 가져오고 있는지 확인할 수 있습니다.

strace -e open bash -l

그러면 bash가 열려고 하는 모든 파일이 인쇄됩니다(그 중 대부분은 무시할 수 있는 C 라이브러리입니다). 이것은 어디를 봐야할지에 대한 힌트를 줄 것입니다. (Bash의 "-l" 옵션을 사용하려면 "로그인" 셸로 실행해야 하며, 이로 인해 일반적으로 bash가 더 많은 시작 파일을 구문 분석하게 됩니다.)

답변2

시작되면 "bash"는 여러 파일에서 설정을 로드합니다. 대부분은 일반적으로 "/etc" 디렉터리의 하위 디렉터리에 있습니다. 따라서 다음 명령을 실행하여 "PYTHONPATH"가 포함된 모든 파일을 찾습니다.

grep -R PYTHONPATH /etc 2>/dev/null

관련 정보