.bashrc 또는 기타 구성 파일을 편집하지 않으면 로그아웃하거나 터미널을 닫을 때 설정한 환경 변수가 사라집니다.
제가 궁금한 점은 "임시" 환경 변수가 어디에 저장되어 있느냐는 것입니다.
나는 그들이 기억 속에 있을지도 모른다고 생각합니다. 터미널이 닫히면 사라지기 때문에 이는 의미가 있습니다(메모리에서 사라지는 데 사용하는 터미널과 동일). 내가 맞나요?
답변1
환경 변수는 프로세스와 관련된 메모리에 저장됩니다.
각 프로세스는 자체 환경 변수 세트에 액세스할 수 있습니다. 하위 프로세스("현재" 프로세스에 의해 시작된 프로세스)는 상속을 받습니다.복사이러한 변수. 어떤 프로세스도 다른 프로세스의 환경 변수를 변경할 수 없습니다.
예를 들어 , 셸을 사용하면 bash
로그인 시 환경 변수를 정의하거나 새 bash
프로세스를 시작할 수 있습니다. 또한 쉘 자체에 의해 정의된 환경 변수가 많이 있으며( PWD
주석 프롬프트 후에 알아냈습니다), 예를 들어 PATH
더 깊은 수준에서 사용되는 다른 변수도 있습니다 shell
(이 경우 시스템 라이브러리에 의해).
답변2
엄밀히 말하면 환경 변수는 우리가 일반적으로 생각하는 것처럼 "저장"되지 않습니다. 프로세스의 메모리에 존재합니다. 프로세스가 시작될 때 생성됩니다(호출 프로세스의 환경 변수의 복사본으로 가능).
Linux에서는 실제로할 수 있는환경 변수가 필요한 프로세스의 PID를 알고 있다면 이를 일종의 "파일"로 가져옵니다. 그들은 거기 있다 /proc/<pid>/environ
.
Bash에서는 환경 변수에서 PID를 얻을 수 있으므로 $
원하는 파일은 /proc/$$/environ
사이에 널 문자가 있는 이름=값 쌍으로 저장됩니다. 이것은 실제로 파일은 아니지만(그리고 쓸 수는 없습니다), 다음과 같이 할 수 있습니다.사용할 권리때로는 편리하므로 파일인 것처럼 작동합니다.
답변3
예, 아니오(그러나 아니오보다는 예가 더 많습니다). 이는 셸의 메모리에 상주하므로 현재 셸이 종료될 때 사라질 뿐만 아니라 현재 셸이 아닌 다른 곳에서 새 셸을 열면 존재하지 않습니다.