크로스 플랫폼에서 컴퓨터 이름을 가져오시나요?

크로스 플랫폼에서 컴퓨터 이름을 가져오시나요?

내 컴퓨터에 대한 로그인 메시지를 작성 중이며 /etc/bashrc컴퓨터에 인사하고 컴퓨터 이름을 표시하고 싶습니다.

이것은 내 코드입니다.

# (system stuff here)
echo "Welcome, $(whoami)."

어떤 사용자와도 사용 하면 login내가 기대하는 바를 얻을 수 있습니다 Welcome, avgjoe.

하지만 출력하고 싶습니다 Welcome, avgjoe, to Tower of Nix. 내 컴퓨터 이름은 (시스템 환경 설정을 통해) "Tower of Nix"로 설정되어 있습니다.

그러면 컴퓨터를 하드코딩하지 않고(예:) 컴퓨터 이름을 어떻게 알 수 있나요 echo "Welcome, $(whoami), to Tower of Nix."?

나는 이것을 시도했지만 hostname아무것도 출력하지 않습니다 192.168.2.13.

scutil --get ComputerName내가 요청한 것(output)을 정확하게 수행하는 것으로 밝혀졌지만 Tower of Nix매뉴얼 페이지를 보면 다음과 같이 scutil명시되어 있습니다.

역사

scutil명령은 Mac OS X 공개 베타에 나타납니다.

따라서 Linux, *BSD 등 모든 운영 체제에서는 작동하지 않을 수 있습니다.

내 질문:모든 컴퓨터에서 컴퓨터 이름을 얻는 방법(또는 거의 모든 것)UNIX의 파생물인가요?

답변1

전부는 아니지만 많은 Unix 계열 시스템에 이 옵션이 uname있습니다 .n

    uname -n

답변2

Mac OS X는 컴퓨터의 IP 호스트 이름과 완전히 다른 이름을 저장하고 검색할 수 있는 몇 안 되는 Unix 계열 시스템 중 하나입니다. 에 대한 호출을 특별하게 처리하는 것이 더 좋습니다 scutil. 실패하면 더 표준적인 방법으로 돌아가세요 hostname.

echo "Welcome, $(whoami), to $(scutil --get ComputerName 2>/dev/null || hostname)."

답변3

GNU/Linux의 호스트 이름은 파일에 있습니다. 예를 들어, .slackware 의 줄을 변경하여 Slackware에서 호스트 이름을 편집할 수 있습니다 /etc/HOSTNAME.

내 제안은 이 파일을 bashrc의 명령에 연결하는 것입니다. 시스템에 호스트 이름 파일이 없으면 /etc간단히 만들 수 있습니다. 또는 변수가 로그인한 사람의 이름으로 채워지므로 $USERnot을 사용할 수 있습니다 .whoamiUSER

명령은 다음과 같습니다.

echo "Welcome, $USER, to `cat /etc/HOSTNAME`"

관련 정보