O nome do computador OS X não corresponde ao mostrado no terminal

119

O nome do meu computador em Preferências do Sistema> compartilhamento está definido como "archos", mas é exibido como "iphone" no terminal. Ele começou a fazer isso depois que eu carreguei o Xcode para desenvolver o iPhone.

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

Alguma ideia sobre o que poderia estar causando isso?

Travis Nelson
fonte
o que você ganha quando digita echo $ HOSTNAME
Daniel
1
isso é estranho ... Estou recebendo 'archos.local' para echo $ HOSTNAME. Fiz a redação inicial quando estava no escritório, mas na minha rede doméstica ela voltou ao normal. Gostaria de saber se isso tem algo a ver com a minha rede de trabalho?
Travis Nelson

Respostas:

94

É perfeitamente normal que isso ocorra; quando você acessa o Terminal remotamente, o bash faz uma pesquisa DNS reversa. Será o mesmo se o nome do host não estiver especificado na rede da qual você está se conectando e não houver resposta do servidor DHCP ou a pesquisa inversa no servidor DNS remoto não conseguir resolver.

Você pode facilmente substituir a configuração padrão usando este comando no Terminal:

# sudo scutil --set HostName archos

Você pode verificá-lo usando:

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

(em que nn significa o endereço IP do seu Mac)

eu vou
fonte
6
@Gio Exclua a chave HostName em Sistema de /Library/Preferences/SystemConfiguration/preferences.plist. Veja esta resposta .
Lri
2
@Gio: A publicação de @ Lauri tem excelentes informações de segundo plano, mas se você quiser um atalho: para excluir, execute sudo scutil --set HostName ''.
mklement0
3
A configuração HostNamenão é aconselhável, pois cria um valor separado que persiste mesmo quando você tenta alterar o nome do host posteriormente System Preferences > Sharing. Por outro lado, a configuração LocalHostNameatualiza o mesmo valor e, normalmente, também é captada pelo shell e hostname(o ComputerNamevalor deve ser atualizado em conjunto). Ou a configuração HostNamese comporta de maneira diferente de uma maneira que é vantajosa aqui?
Mklement0
1
outro para testar o nome do host éhostname -f
ericn 26/08/15
2
Eu tive essa dificuldade em duas máquinas e as idéias propostas na resposta de J.Hoover abaixo e no comentário de mklement0 acima não funcionaram. Ou seja, vocês dois estão avisando que apenas se altera o LocalHostName e o ComputerName; no entanto, a alteração nunca mudou o Terminal para refletir o Nome do Computador especificado nas Preferências do Sistema. Acredito que a razão para isso, no meu caso, é que ambas as máquinas eram backups do Time Machine e mantinham as credenciais armazenadas localmente na imagem antiga, apesar de eu ter renomeado posteriormente. Apenas HostName funcionou para mim. FYI para os outros.
oemb1905
45

Você também pode querer alterar algumas outras coisas usando o comando scutil:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
Jeffrey J. Hoover
fonte
2
Alterando o nome em System Preferences-> Sharing e, em seguida, usando scutilpara definir HostName, ambos ComputerNamee LocalHostNamejá foram definidos para o novo nome para mim (no Mavericks). É bom saber que essas outras configurações existem.
Jim Stewart
@ JimStewart: De fato, é por isso que NUNCA é melhor definir HostName, porque isso fará com que esse valor persista mesmo quando você tentar alterar seu nome de host posteriormente através das Preferências do Sistema . Por outro lado, o LocalHostName é captado pelo shell e hostname, portanto, HostNamenunca é necessário.
mklement0
No meu caso, eu tinha um valor incorreto LocalHostName. Executando o sudo scutil --set LocalHostName ''LocalHostName excluído e agora meu prompt está usando o ComputerName, que tem o valor correto.
marca
14

Há duas razões possíveis para o shell ( $HOSTNAMEvariável, '\h'in $PS1) e o hostnameutilitário relatar um nome de host diferente do mostrado em System Preferences > Sharing:

  • sudo scutil --set HostName newNamefoi usado para alterar persistentemente o nome do host - infelizmente, esse valor é independente do LocalHostNamevalor definido pelas Preferências do sistema nos bastidores - mesmo que man hostnamesugira esse método, NÃO O USE por esse motivo; execute sudo scutil --set HostName ''para removê-lo , quando nesse ponto LocalHostNamedeve ser relatado novamente; para obter mais informações, consulte este post de @Lauri Ranta.

  • [ Atualização: o seguinte não é mais verdadeiro a partir do OSX 10.10 ] Se o seu /etc/hostsarquivo tiver uma entrada que corresponda ao endereço IP da sua máquina, o nome dessa entrada será relatado.

Somente se nenhuma das opções acima for verdadeira, o shell e hostnamerefletirá o valor definido nas Preferências do Sistema.


Se você quiser mudar o seu hostname do shell , execute ambos dos seguintes:

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

onde <newFriendlyName>pode haver uma versão mais amigável (espaços, pontuação) de <newName>(apenas alfanuméricos e traços).

mklement0
fonte
infelizmente, apenas definindo os dois não parecem ser o suficiente no meu caso: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack
@rogerdpack: E você correu sudo scutil --set HostName ''primeiro (importa o caso) e certificou-se de que não há entrada /etc/hosts? scutil --get HostNamedeve relatar Hostname: not set.
mklement0
sim scutil --get HostName HostName: not set/ etc / hosts parece benigno ...
rogerdpack
1
@rogerdpack: Pergunta boba: sua PS1variável não possui um nome de host codificado em vez de usá- \hlo, pois não? Como um aparte: /etc/hostsnão é mais consultado a partir do OSX 10.10 (atualizei minha resposta).
mklement0
2
Bela. A remoção do nome do host (configurando-o para a sequência vazia, como você sugeriu:) sudo scutil --set HostName '' novamente permite que o OS X mapeie o nome do computador para seu endereço IP (por exemplo, isso agora funciona ping <computername>).
Brent Faust
7

Além da dica de Jeffrey J. Hoover (acima) ,

Eu adicionaria estes dois últimos passos:

  • Limpe o cache do DNS digitando: dscacheutil -flushcache
  • Reinicie o seu Mac.
Perigo14
fonte
5

Concordo que a dica de Jeffrey Hoover foi a resposta correta. Limpar o cache do DNS e reiniciar o Mac também é um bom passo. Esta é uma variante da resposta de Jeff Hoover:

sudo -i
Password:

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

exit
user67806
fonte
1
Está faltando um -: deve ser --settrabalhar. Além disso, como comentei na resposta de Jeff: provavelmente é melhor não definir HostName.
mklement0
4

Preferências do Sistema -> Compartilhamento -> Nome do Computador -> defina-o como preferir

E, em seguida, reinicie o seu computador. Nenhum comando do console foi necessário. Funciona para OS X 10.10.2

Terry Bu
fonte
Na versão 10.14.6, tive uma situação em que o compartilhamento -> nome do computador foi definido da maneira que eu queria e ainda hostnameretornava "MacBook-Pro". Eu até mudei e ainda tinha o problema. Eu nunca vi esse problema antes. Os scutilcomandos funcionaram para mim. Eu estou querendo saber onde / como você deve fazer isso através da interface GUI.
pedz
3

Usa isto

sudo systemsetup -setcomputername $name
Quanlong
fonte
2

Eu tive o problema de que apenas o próprio shell ( zshno meu caso) falhou ao mostrar o nome correto do computador. Simplesmente reiniciar o shell resolveu:

exec /bin/zsh
Magnus Gustavsson
fonte
2

Além da resposta anterior, lembre-se de que você pode usar um endereço estático no seu roteador. Você deve inserir o IP estático e o endereço MAC da sua placa de rede e definir um nome para ela. O nome do host será atualizado automaticamente para o nome especificado. É isso aí.

substantivo
fonte