쉘(예: bash 쉘)에는 쉘 변수 개념과 환경 변수 개념이 있습니다.
하지만 다른 비쉘 프로세스(예: Firefox, gedit 등)는 어떻습니까? 이러한 프로세스에도 쉘 변수가 있습니까, 아니면 환경 변수만 있습니까?
답변1
비쉘 프로세스에는 쉘 변수가 없습니다. C 프로그램에는 C 변수가 있고, awk
프로그램에는 변수가 있으며 awk
, Perl 프로그램에는 Perl 변수가 있습니다. 이러한 변수는 모두 자체적인 방식으로 쉘 변수와 매우 다릅니다.
다른 프로세스에 쉘 변수가 없거나 쉘 변수에 액세스할 수 없는 이유는 쉘 변수가 내보내지지 않기 때문일 뿐만 아니라(즉, 환경 변수가 아님) 일부 쉘에서는 쉘 변수보다 더 많은 정보를 쉘 변수에 추가할 수 있기 때문입니다. 하나의 쉘 변수. 읽기 전용 변수, 정수 변수 등의 속성과 같은 문자열 값 이러한 유형 속성( typeset
내장 명령 참조)은 환경 변수에 적용할 수 없습니다.그리고 사용되다다른 과정에서.
일부 셸(예: bash
)은 배열과 연관 배열도 지원합니다. 이러한 구조는 키(변수 이름)와 값이 모두 환경 변수에 적용되는 일반 텍스트 문자열인 간단한 키-값 쌍 형식에 비해 너무 복잡합니다. 즉, 공통 환경에서 다른 프로시저와 함께 사용하기 위해 내보낼 수 없습니다.
모든 프로세스는 상위 프로세스에서 상속된 환경 변수에 액세스할 수 있습니다. 언어에 따라 프로그램은 다양한 방식으로 이 콘텐츠에 액세스할 수 있습니다.
예를 들어, AC 프로그램은 이를 사용할 수 있고 getenv()
, awk
프로그램은 연관 배열을 사용할 수 있으며 ENVIRON
, Perl 프로그램은 해시를 사용하여 환경 변수에 액세스할 수 있습니다.%ENV
잘 모르겠지만 gedit
에서는 vim
쉘과 유사한 구문을 사용하여 환경 변수에 액세스할 수 있습니다.
:echo $HOME
예를 들어. 여기서는 쉘과 아무 관련이 없으며 echo
비슷한 방식으로 작동합니다. echo
게다가 문자열은 사용자에게 환경 변수를 노출하는 방법 $HOME
이기도 합니다 .vim