작성
·
453
0
안녕하세요 강사님.
환경변수 PWD, OLDPWD에 관하여 질문드립니다.
쉘을 두개 띄워놓고 해당 환경변수를 출력하면 각 쉘에서 나온 값이 다르게 나오더라고요.
어떻게 서로 다른 쉘에서 같은 문자의 환경변수가 다른 값을 갖는지 궁금합니다.
아래는 구글링을 좀 하면서 서로 다른 값을 가질수 있는 방법을 생각해본것인데 맞게 추론한것인지 궁금합니다.
export로 로컬 환경변수를 생성 또는 수정할 수 있다. 그렇다면 혹시 PWD, OLDPWD는 로컬 환경 변수로 동작하는 것이 맞을까요?
그리고 만약 로컬 환경변수가 맞다면 cd를 실행하면 cd 프로그램(프로세스?)에서 환경변수를 바꾸는 것인지, cd 프로그램은 쉘의 자식 프로세스인데 자식 프로세스가 부모 프로세스의 로컬 환경변수를 바꿀 수 있는지 궁금합니다.
답변 1
1
안녕하세요 우댕님
먼저, 서로 다른 터미널이라면 서로 다른 bash process가 실행 중인 것입니다. echo $$
를 해보시면 실행 중인 bash의 pid를 확인하실 수 있습니다.
말씀하신 PWD, OLDPWD는 bash의 환경 변수입니다. PWD나 OLDPWD 같은 환경 변수는 bash가 자동으로 적합한 값을 설정해줍니다. 이는 bash 프로세스 수준에서 환경 변수를 제어해주기 때문에 서로 다른 터미널에서 실행 중인 두 bash에서는 같은 이름의 환경 변수가 서로 다른 값을 가질 수 있습니다. 환경 변수 뿐만 아니라 일반 변수나 export로 선언된 변수 모두 bash 마다 관리하고 있기 때문에 서로 다른 값을 가질 수 있습니다.
의문이 풀리셨길 바라겠습니다. 감사합니다!