나는 항상 이것이 PS1
환경 변수라고 생각했습니다. 하지만 Ubuntu의 기본값을 확인 .bashrc
하고 확인 PS1
하면
grep PS1 /etc/skel/.bashrc
export PS1
아니요
내보내기가 없다면 환경변수가 아니라는 뜻인가요?
답변1
이 PS1
변수는 쉘에 영향을 미치는 다른 여러 변수와 함께(쉘 변수매뉴얼 에서 bash
)은 내보내지지 않으므로 환경 변수가 아닙니다.
PS1
일부 다른 변수는 하위 프로세스에 전달될 필요가 없기 때문에 환경 변수가 아닙니다. 예를 들어, 이 변수를 사용하면 현재 쉘이 기본 프롬프트의 모양을 알 수 있는데, 이는 다른 프로그램에서는 관심을 두지 않을 수도 있습니다. 및 PS1
같은 변수에도 마찬가지입니다 . 또한 쉘은 대화형이 아닌 이상 시작 시 이 변수를 설정 해제합니다.HISTFILE
PROMPT_COMMAND
bash
PS1
일반적으로 자식 프로세스가 확인해야 하는 변수를 내보내십시오. 현재 셸 세션 내에서만 사용되는 변수(셸 자체, 스크립트 또는 대화형 명령)를 내보내지 마십시오.
또한 쉘의 초기화 파일이 특정 변수를 내보내지 않더라도 해당 변수는 쉘의 부모에 의해 여전히 내보낼 수 있습니다. PATH
예를 들어, 변수 및 TERM
기타 변수의 경우가 이에 해당합니다 SHELL
. 이는 일반적으로 이러한 변수를 내보낼 필요가 없음을 의미합니다.다시(설정을 해제하지 않는 한)
이 IFS
변수는 쉘이 단어 분리를 수행하는 방법과 read
내장 유틸리티의 동작을 결정합니다. 껍질은 보통이에요초기화이 변수는 환경의 변수 값을 사용하면 원치 않는 놀라운 결과를 초래할 수 있기 때문입니다. 일반적으로 말하면 IFS
절대 내보내서는 안됩니다. 변수를 설정하거나 내보내지 않는 것이 가장 좋습니다. CDPATH
이는 명령의 동작에 영향을 미치고 cd
이로 인해 스크립트의 예상 동작이 중단될 수 있습니다.