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?


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)


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"

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).


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


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

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


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



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

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í.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.