PS1은 정말 환경 변수인가요?

PS1은 정말 환경 변수인가요?

나는 항상 이것이 PS1환경 변수라고 생각했습니다. 하지만 Ubuntu의 기본값을 확인 .bashrc하고 확인 PS1하면

grep PS1 /etc/skel/.bashrc

export PS1아니요

내보내기가 없다면 환경변수가 아니라는 뜻인가요?

답변1

PS1변수는 쉘에 영향을 미치는 다른 여러 변수와 함께(쉘 변수매뉴얼 에서 bash)은 내보내지지 않으므로 환경 변수가 아닙니다.

PS1일부 다른 변수는 하위 프로세스에 전달될 필요가 없기 때문에 환경 변수가 아닙니다. 예를 들어, 이 변수를 사용하면 현재 쉘이 기본 프롬프트의 모양을 알 수 있는데, 이는 다른 프로그램에서는 관심을 두지 않을 수도 있습니다. 및 PS1같은 변수에도 마찬가지입니다 . 또한 쉘은 대화형이 아닌 이상 시작 시 이 변수를 설정 해제합니다.HISTFILEPROMPT_COMMANDbashPS1

일반적으로 자식 프로세스가 확인해야 하는 변수를 내보내십시오. 현재 셸 세션 내에서만 사용되는 변수(셸 자체, 스크립트 또는 대화형 명령)를 내보내지 마십시오.

또한 쉘의 초기화 파일이 특정 변수를 내보내지 않더라도 해당 변수는 쉘의 부모에 의해 여전히 내보낼 수 있습니다. PATH예를 들어, 변수 및 TERM기타 변수의 경우가 이에 해당합니다 SHELL. 이는 일반적으로 이러한 변수를 내보낼 필요가 없음을 의미합니다.다시(설정을 해제하지 않는 한)

IFS변수는 쉘이 단어 분리를 수행하는 방법과 read내장 유틸리티의 동작을 결정합니다. 껍질은 보통이에요초기화이 변수는 환경의 변수 값을 사용하면 원치 않는 놀라운 결과를 초래할 수 있기 때문입니다. 일반적으로 말하면 IFS절대 내보내서는 안됩니다. 변수를 설정하거나 내보내지 않는 것이 가장 좋습니다. CDPATH이는 명령의 동작에 영향을 미치고 cd이로 인해 스크립트의 예상 동작이 중단될 수 있습니다.

관련 정보