터미널에 표시되는 것과 일치하지 않는 OS X 컴퓨터 이름


119

시스템 환경 설정> 공유에서 내 컴퓨터 이름이 "archos"로 설정되었지만 터미널에서 "iphone"으로 표시됩니다. iPhone 개발을 위해 Xcode를로드 한 후에이 작업을 시작했습니다.

Last login: Mon Nov  7 14:46:55 on ttys001
iphone:~ travis$ 

어떤 아이디어가 이것을 일으킬 수 있습니까?


echo $ HOSTNAME을 입력하면 무엇을 얻을 수 있습니까?
Daniel

1
echo $ HOSTNAME에 'archos.local'이 표시됩니다. 사무실에있을 때 초기 기록을했지만 홈 네트워크에서는 정상으로 돌아 왔습니다. 이것이 내 업무 네트워크와 관련이 있는지 궁금합니다.
트래비스 넬슨

답변:


94

이것이 발생하는 것은 완전히 정상입니다. 터미널에 원격으로 로그인하면 bash는 역방향 DNS 조회를 수행합니다. 연결중인 네트워크에 호스트 이름이 지정되지 않고 DHCP 서버에서 응답이 없거나 원격 DNS 서버에 대한 역방향 조회가 해결되지 않은 경우에만 동일합니다.

터미널에서이 명령을 사용하여 기본 설정을 쉽게 무시할 수 있습니다.

# sudo scutil --set HostName archos

다음을 사용하여 확인할 수 있습니다.

# nslookup nn.nn.nn.nn
( or )
# host nn.nn.nn.nn

(여기서 nn은 Mac의 IP 주소를 나타냄)


6
@Gio /Library/Preferences/SystemConfiguration/preferences.plist에서 시스템 아래의 HostName 키를 삭제합니다. 이 답변을 참조하십시오 .
Lri

2
@Gio : @Lauri의 게시물에는 뛰어난 배경 정보가 있지만 바로 가기를 원하면 삭제, 실행하십시오 sudo scutil --set HostName ''.
mklement0

3
설정 HostName은 나중에 값을 통해 호스트 이름을 변경하려고 할 때도 유지되는 별도의 값을 생성하므로 권장되지 않습니다 System Preferences > Sharing. 반대로 설정 LocalHostName은 동일한 값을 업데이트하며 일반적으로 셸에서도 선택 hostname되며 ComputerName값은 함께 업데이트됩니다. 아니면 HostName여기서 유리한 방식으로 설정이 다르게 작동합니까?
mklement0

1
다른 호스트 이름을 테스트hostname -f
ericn

2
나는 2 대의 기계 에서이 어려움을 겪었으며 아래 J.Hoover의 답변과 위의 mklement0의 의견에서 제안 된 아이디어가 작동하지 않았습니다. 즉, 둘 다 LocalHostName과 ComputerName 만 변경하도록 권장하지만 시스템 환경 설정에 지정된 컴퓨터 이름을 반영하도록 터미널을 변경하지 않았습니다. 필자의 경우 두 시스템 모두 Time Machine 백업이고 나중에 이름을 바꾸더라도 이전 이미지에서 로컬로 저장된 자격 증명을 유지했기 때문입니다. HostName 만 나를 위해 일했습니다. 다른 사람들에게 참고하십시오.
oemb1905

45

scutil 명령을 사용하여 다른 사항을 변경할 수도 있습니다.

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"

2
사용하여 다음 시스템 환경 설정 -> 공유에서 이름을 변경하고하여 scutil설정 HostName, 모두 ComputerName와는 LocalHostName이미 (매버릭스에서) 나를 위해 새로운 이름으로 설정되었다. 그러나 이러한 다른 설정이 존재한다는 것을 알고 반갑습니다.
Jim Stewart

@JimStewart : 그렇기 HostName때문에 나중에 설정하지 않는 것이 좋습니다. 이렇게하면 나중에 시스템 환경 설정을 통해 호스트 이름을 변경하려고 할 때도 해당 값이 유지됩니다 . 반대로, LocalHostName IS는 쉘에 의해 포착하고 hostname있으므로, HostName필요하지 않습니다.
mklement0

제 경우에는 잘못된 LocalHostName 값이있었습니다. sudo scutil --set LocalHostName ''삭제 된 LocalHostName을 실행하면 이제 내 프롬프트가 올바른 값을 가진 ComputerName을 사용하고 있습니다.
Mark

14

쉘 ( $HOSTNAMEvariable, '\h'in $PS1) 및 hostname유틸리티가 다음에 표시된 호스트 이름과 다른 호스트 이름을보고 해야하는 두 가지 이유가 있습니다 System Preferences > Sharing.

  • sudo scutil --set HostName newName호스트 이름을 변경 지속적으로하는 데 사용 - 불행하게도,이 값은 독립LocalHostName- 뒤에서 시스템 환경 설정에서 설정 값 에도 불구하고 man hostnameIT를 사용하지 마십시오,이 방법을 제안 , 즉 이유 그것을 제거하기 위해 달린다sudo scutil --set HostName '' .이 시점에서 LocalHostName다시보고되어야한다. 배경 은 @Lauri Ranta 의이 게시물 을 참조하십시오 .

  • [ 업데이트 : OSX 10.10부터는 다음 사항이 더 이상 적용되지 않습니다. ] /etc/hosts파일에 컴퓨터의 IP 주소와 일치하는 항목이 있으면 해당 항목의 이름이보고됩니다.

위의 어느 것도 참이 아닌 경우에만 쉘은 hostname시스템 환경 설정을 통해 설정된 값을 반영합니다.


쉘에서 호스트 이름변경 하려면 다음을 모두 실행 하십시오.

  • sudo scutil --set LocalHostName <newName>
  • sudo scutil --set ComputerName <newFriendlyName>

여기서 <newFriendlyName>더 친숙한 버전 (공백, 문장 부호)이 될 수 있습니다 <newName>(알파벳 및 대시 만 해당).


불행하게도, 단지 그 두 가지를 설정하는 내 경우에는 충분히 될 것 같지 않았다 gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack

@ rogerdpack : 그리고 당신은 sudo scutil --set HostName ''먼저 실행하고 (사건 문제)에 항목이 없는지 확인했습니다 /etc/hosts. scutil --get HostName보고해야합니다 Hostname: not set.
mklement0

scutil --get HostName HostName: not set/ etc / hosts는 양성인 것 같습니다 ...
rogerdpack

1
@ rogerdpack : 바보 같은 질문 : PS1변수 에을 사용하는 대신 하드 코딩 된 호스트 이름이 발생 \h하지 않습니까? 제쳐두고 : /etc/hosts더 이상 OSX 10.10에서 컨설팅되지 않습니다 (나는 대답을 업데이트했습니다).
mklement0

2
아름다운. 호스트 이름을 제거하면 (제안한대로 빈 문자열로 설정하여 sudo scutil --set HostName '' ) OS X은 컴퓨터 이름을 해당 IP 주소에 매핑 할 수 있습니다 (예 : 이제 작동합니다 ping <computername>).
브렌트 파우스트


5

Jeffrey Hoover의 팁이 정답이라는 데 동의합니다. DNS 캐시를 플러시하고 Mac을 재시동하는 것도 좋은 단계입니다. 이것은 Jeff Hoover의 답변 변형입니다.

sudo -i
Password:

for n in HostName ComputerName LocalHostName; do
    scutil --set $n new_hostname
done

exit

1
당신이 누락되었습니다 -: --set작동 해야합니다 . 또한 Jeff의 답변에 대해 언급했듯이 설정하지 않는 것이 좋습니다 HostName.
mklement0

4

시스템 환경 설정-> 공유-> 컴퓨터 이름-> 원하는대로 설정

그런 다음 컴퓨터를 다시 시작하십시오. 콘솔 명령이 필요하지 않았습니다. OS X 10.10.2에서 작동


10.14.6에서 공유-> 컴퓨터 이름이 hostname"MacBook-Pro"를 반환 하는 방식으로 설정되었습니다 . 나는 심지어 그것을 바꾸었고 여전히 문제가 있었다. 나는이 문제를 전에 본 적이 없다. scutil명령은 나를 위해 일했다. GUI 인터페이스를 통해 어디에서 어떻게 수행해야하는지 궁금합니다.
pedz


3

이것을 사용하십시오

sudo systemsetup -setcomputername $name

2

쉘 자체 ( zsh내 경우) 만 올바른 컴퓨터 이름을 표시하지 못하는 문제가있었습니다 . 쉘을 다시 시작하면 해결되었습니다.

exec /bin/zsh

2

이전 답변 외에도 라우터에서 고정 주소를 사용할 수 있습니다. 네트워크 카드의 고정 IP 및 MAC 주소를 입력 한 다음 이름을 설정해야합니다. 호스트 이름은 지정된 이름으로 자동 업데이트됩니다. 그게 다야.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.