HOSTNAME 및 HOSTTYPE의 특수 환경 변수는 어디에서 유래합니까?

HOSTNAME 및 HOSTTYPE의 특수 환경 변수는 어디에서 유래합니까?

체계

하드웨어 장치에 Ubuntu-20.04 LTS Live Server 이미지가 있습니다.

요구사항

컨테이너의 호스트 이름을 하드웨어 장치의 호스트 이름과 정확히 동일하게 설정하고 싶습니다.

TAB자동 완성을 누르면 $HOS터미널에서 두 개의 환경 변수를 찾습니다.

  • HOSTNAME
  • HOSTTYPE

이러한 변수에 대한 흥미로운 점은 다음 위치에서 찾을 수 없다는 것입니다.

  • printenv
  • /etc/environment
  • /etc/bash.bashrc

안타깝게도 Docker 컨테이너에서 액세스할 수 없게 됩니다.

환경 변수에 대한 표준 파일의 일부가 아닌 경우 이러한 변수가 어디서 유래하는지 궁금합니다.

답변1

두 변수 모두 Ubuntu에서 대화형 쉘에 사용되는 쉘인 bash 쉘의 내장 변수입니다. 즉, 실행 중인 bash 셸에 존재하며 bash로드 시 해당 값이 설정됩니다.

그 목적은 해당 정보를 즉시 쉘에서 시작된 프로세스에 대해 항상 사용할 수 있도록 만드는 것입니다. 이것이 없으면 해당 정보가 필요한 프로세스는 해당 정보를 얻기 위해 외부 도구를 시작해야 합니다. 따라서 이러한 기본 제공 변수의 이점은 해당 정보가 필요한 프로세스에 대한 편의성과 성능입니다.

dash대조적으로, 우분투에서 프로세스를 시작하기 위해 사용되며 에 심볼릭 링크된 훨씬 슬림해진 셸은 sh다음을 수행합니다.~ 아니다이러한 변수를 제공하십시오. 이 셸에서 실행되는 애플리케이션은 해당 정보를 얻기 위해 외부 도구에 의존해야 합니다.

$HOSTNAME호스트 이름을 포함하고 $HOSTTYPE시스템 하드웨어를 식별합니다.

답변2

내가 태그한 이후로, 이는 bash에 의해 설정됩니다. 보다5.2 배쉬 변수:

이러한 변수는 Bash에 의해 설정되거나 사용되지만 다른 쉘은 일반적으로 이를 특별히 처리하지 않습니다.

...

호스트 이름

현재 호스트의 이름입니다.

호스트 유형

Bash가 실행 중인 머신을 설명하는 문자열입니다.

Bash는 어디에서 정보를 얻나요? 부르는 것 같아요uname()이것들을 위해.

관련 정보