![이러한 기본 환경 변수는 언제 어떻게 생성되고 내보내지나요?](https://linux55.com/image/131926/%EC%9D%B4%EB%9F%AC%ED%95%9C%20%EA%B8%B0%EB%B3%B8%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EB%8A%94%20%EC%96%B8%EC%A0%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%83%9D%EC%84%B1%EB%90%98%EA%B3%A0%20%EB%82%B4%EB%B3%B4%EB%82%B4%EC%A7%80%EB%82%98%EC%9A%94%3F.png)
다음은 시작 파일을 실행하지 않고 bash 셸의 기본 환경 변수를 보여줍니까?
$ env -i bash --noprofile --norc
$ export
declare -x OLDPWD
declare -x PWD="/home/t"
declare -x SHLVL="1"
(이렇게 하면 set
환경 변수일 수도 있고 아닐 수도 있는 기본 셸 변수의 더 긴 목록이 제공됩니다.)
이 세 가지 환경 변수는 언제 어떻게 생성되고 내보내지나요?
bash 자체 또는 bash를 시작할 때 제외하지 않은 암시적 시작 파일을 만든 사람은 누구입니까?
내 질문은 다음에서 영감을 얻었습니다.기본 환경 변수는 무엇입니까?
감사해요.
답변1
오픈 소스 프로그램이 무엇을 하는지 궁금할 때 나는 소스 코드(문서와 실험은 물론)를 살펴봅니다. set_auto_export (
검색 결과에 따르면 정말 좋은 목록을 찾은 것 같습니다.bash 변수.c 소스 코드
$OLDPWD
: http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n897$PWD
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n849$SHLVL
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n839QNX에서
$NODE
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n483
이것들은 안에 있습니다 initialize_shell_variables()
.다음에서 전화 걸기 shell_initialize()
shell.c에서 그 자체는 다음과 같습니다.다음에서 전화 걸기 main()
shell.c에서
당신은 심지어 찾을 수 있습니다증거어느 시점에 수출용으로 표시되었지만 $PATH
지금은 종료되었습니다.$TERM
ifdef'd