Il nome del computer OS X non corrisponde a quello mostrato sul terminale


119

Il nome del mio computer in Preferenze di Sistema> condivisione è impostato su "archos" ma viene visualizzato come "iphone" sul terminale. Ha appena iniziato a farlo dopo aver caricato Xcode per lo sviluppo di iPhone.

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

Qualche idea su cosa potrebbe causare questo?


cosa ottieni quando digiti echo $ HOSTNAME
Daniel

1
questo è strano ... Ricevo 'archos.local' per echo $ HOSTNAME. Ho fatto il writeup iniziale quando ero in ufficio, ma sulla mia rete domestica è tornato alla normalità. Mi chiedo se questo abbia qualcosa a che fare con la mia rete di lavoro?
Travis Nelson,

Risposte:


94

È perfettamente normale che ciò accada; quando si accede al Terminale in remoto bash esegue una ricerca DNS inversa. Sarà lo stesso solo se il nome host non è specificato sulla rete da cui ti stai connettendo e non c'è risposta dal server DHCP, o la ricerca inversa contro il server DNS remoto non riesce a risolvere.

Puoi facilmente ignorare l'impostazione predefinita usando questo comando nel Terminale:

# sudo scutil --set HostName archos

Puoi verificarlo usando:

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

(dove nn indica l'indirizzo IP del tuo Mac)


6
@Gio Elimina la chiave HostName in Sistema da /Library/Preferences/SystemConfiguration/preferences.plist. Vedere questa risposta .
Lri,

2
@Gio: il post di @ Lauri ha eccellenti informazioni di base, ma se si desidera un collegamento: eliminare, eseguire sudo scutil --set HostName ''.
mklement0

3
L'impostazione HostNamenon è consigliabile, poiché crea un valore separato che persiste anche quando in seguito si tenta di modificare il nome host tramite System Preferences > Sharing. Al contrario, l'impostazione LocalHostNameaggiorna lo stesso valore e viene normalmente acquisita anche dalla shell e hostname(il ComputerNamevalore deve essere aggiornato in tandem). O l'impostazione si HostNamecomporta diversamente in un modo che è vantaggioso qui?
mklement0

1
un altro per testare il nome host èhostname -f
ericn,

2
Ho avuto questa difficoltà su 2 macchine e le idee proposte nella risposta di J. Hoover di seguito, e nel commento di mklement0 sopra, non hanno funzionato. Vale a dire, state entrambi avvisando che si cambiano solo LocalHostName e ComputerName, tuttavia, cambiando questi non è mai cambiato il Terminale per riflettere il Nome computer specificato nelle Preferenze di Sistema. Credo che la ragione di ciò, nel mio caso, sia che entrambe le macchine fossero backup di Time Machine e conservassero le credenziali archiviate localmente dalla vecchia immagine nonostante la mia ridenominazione in un secondo momento. Solo HostName ha funzionato per me. Cordiali saluti ad altri.
oemb1905,

45

Potresti anche voler cambiare alcune altre cose usando il comando scutil:

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

2
Modificando il nome in Preferenze di Sistema-> Condivisione e quindi usando scutilper impostare HostName, entrambi ComputerNameed LocalHostNameerano già impostati sul nuovo nome per me (in Mavericks). Bello sapere che esistono altre impostazioni.
Jim Stewart,

@JimStewart: In effetti, ecco perché è meglio non impostare MAI HostName, perché così facendo il valore persisterà anche quando in seguito si tenta di modificare il nome host tramite Preferenze di Sistema . Al contrario, LocalHostName viene raccolto dalla shell e hostname, quindi, HostNamenon è mai necessario.
mklement0

Nel mio caso avevo un valore LocalHostName errato. Eseguendo sudo scutil --set LocalHostName ''LocalHostName eliminato e ora il mio prompt utilizza ComputerName, che ha il valore corretto.
segna il

14

Esistono due potenziali motivi per cui la shell ( $HOSTNAMEvariabile, '\h'in $PS1) e l' hostnameutilità segnalano un nome host diverso da quello mostrato in System Preferences > Sharing:

  • sudo scutil --set HostName newNameè stato usato per modificare in modo persistente il nome host - sfortunatamente, questo valore è indipendente dal LocalHostNamevalore impostato dalle Preferenze di Sistema dietro le quinte - anche se man hostnamesuggerisce questo metodo, NON USARLO per questo motivo; correre sudo scutil --set HostName ''per rimuoverlo , a quel punto LocalHostNamedovrebbe essere nuovamente segnalato; per lo sfondo, vedi questo post di @Lauri Ranta.

  • [ Aggiornamento: quanto segue non è più vero a partire da OSX 10.10 ] Se il /etc/hostsfile ha una voce che corrisponde all'indirizzo IP della macchina, verrà riportato il nome di quella voce.

Solo se nessuna delle precedenti è vera, la shell hostnamerifletterà il valore impostato tramite Preferenze di Sistema.


Se si desidera modificare il nome host dalla shell , eseguire entrambe le seguenti operazioni:

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

dove <newFriendlyName>può essere una versione più amichevole (spazi, punteggiatura) di <newName>(solo caratteri alfanumerici e trattini).


sfortunatamente, solo l'impostazione di questi due non sembra essere abbastanza nel mio caso: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack

@rogerdpack: E hai eseguito sudo scutil --set HostName ''prima (il caso è importante) e ti sei assicurato che non ci fosse accesso /etc/hosts? scutil --get HostNamedovrebbe riferire Hostname: not set.
mklement0

scutil --get HostName HostName: not set/ etc / hosts sembra benigno ...
rogerdpack

1
@rogerdpack: domanda stupida: la tua PS1variabile non ha un nome host codificato anziché utilizzare \h, vero? A parte: /etc/hostsnon è più consultato a partire da OSX 10.10 (ho aggiornato la mia risposta).
mklement0

2
Bellissimo. La rimozione del nome host (impostandolo sulla stringa vuota come suggerito sudo scutil --set HostName '' :) consente nuovamente a OS X di mappare il nome del computer sul suo indirizzo IP (ad esempio, ora funziona ping <computername>).
Brent Faust,


5

Sono d'accordo che il suggerimento di Jeffrey Hoover fosse la risposta corretta. Anche svuotare la cache DNS e riavviare il Mac è un bel passo. Questa è la variante della risposta di Jeff Hoover:

sudo -i
Password:

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

exit

1
Ti manca un -: deve essere --setper funzionare. Inoltre, come ho commentato alla risposta di Jeff: probabilmente è meglio non impostare HostName.
mklement0,

4

Preferenze di Sistema -> Condivisione -> Nome computer -> impostalo su qualunque cosa

E quindi riavviare il computer. Non erano necessari comandi da console. Funziona con OS X 10.10.2


Il 10.14.6, ho avuto una situazione in cui la condivisione -> Nome computer è stata impostata come volevo, ma ha hostnamerestituito "MacBook-Pro". L'ho anche cambiato e ho ancora avuto il problema. Non ho mai visto questo problema prima. I scutilcomandi hanno funzionato per me. Mi chiedo dove / come si supponga di farlo tramite l'interfaccia della GUI.
pedz



2

Ho avuto il problema che solo la shell stessa ( zshnel mio caso) non è riuscita a mostrare il nome corretto del computer. Riavvia semplicemente la shell risolto:

exec /bin/zsh

2

Oltre alla risposta precedente, ricorda che puoi utilizzare un indirizzo statico nel tuo router. Devi inserire l'IP statico e l'indirizzo MAC della tua scheda di rete, quindi impostarne un nome. Il nome host verrà automaticamente aggiornato al nome specificato. Questo è tutto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.