Linux의 HOSTNAME 환경 변수


21

내 Linux 상자 (구체적으로 Linux 2.6.31)에서는 HOSTNAME 환경 변수가 내 쉘에서 사용할 수 있지만 스크립트에서는 사용할 수 없음을 알았습니다. 예를 들어

$ echo $HOSTNAME

보고

xxxxxxxx.com,

그러나

$ ruby -e 'puts ENV["HOSTNAME"]'

보고

nil

반면에 USER 환경 변수는 쉘과 스크립트 모두에서 사용할 수 있습니다.

입력 할 때 나타나는 환경 변수 목록에 USER가 나타납니다.

export

즉,

declare -x USER="infogrind"

그러나 HOSTNAME은 그렇지 않습니다. 문제가 그와 관련이 있다고 생각합니다.

내 질문 : 1) 스크립트에서 HOSTNAME을 사용할 수있게하는 방법과 2) 이해를 돕기 위해이 변수는 처음에 어디에 설정되어 있으며 왜 "내보내기"되지 않습니까?

답변:


21

$HOSTNAME시작 파일이 아닌 자동으로 설정되는 Bash 변수입니다. 루비는 아마도 sh쉘에서 실행되며 해당 변수를 포함하지 않습니다. 직접 내보낼 수없는 이유는 없습니다.

bash$ echo $HOSTNAME
foobar
bash$ sh -c 'echo $HOSTNAME'

bash$ export HOSTNAME
bash$ sh -c 'echo $HOSTNAME'
foobar

와 같은 시작 파일 중 하나에 export 명령을 추가 할 수 있습니다 ~/.bashrc.

Ruby에서 (irb 표시됨) :

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"

2
gethostname()때문에 일반적으로 사용하는 것이 좋습니다 .
user1686 April

3
posix 표준은 posix 호환 시스템에서 예상되는 환경 변수를 열거하고 HOSTNAME은 목록에 없습니다. pubs.opengroup.org/onlinepubs/009695399/basedefs/…
qneill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.