Le nom de l'ordinateur OS X ne correspond pas à ce qui s'affiche sur le terminal

119

Le nom de mon ordinateur dans Préférences système> partage est défini sur "archos" mais s'affiche sous la forme "iphone" sur le terminal. Cela a juste commencé à le faire après avoir chargé Xcode pour le développement de l'iPhone.

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

Des idées ce qui pourrait être la cause?

Travis Nelson
la source
qu'est-ce que vous obtenez quand vous tapez echo $ HOSTNAME
Daniel
1
c'est bizarre ... Je me fais 'archos.local' pour echo $ HOSTNAME. J'ai rédigé le texte initial lorsque j'étais au bureau, mais sur mon réseau domestique, la situation est revenue à la normale. Je me demande si cela a quelque chose à voir avec mon réseau de travail?
Travis Nelson

Réponses:

94

Il est parfaitement normal que cela se produise. Lorsque vous vous connectez à distance à un terminal, bash effectue une recherche DNS inversée. Ce ne sera le cas que si le nom d'hôte n'est pas spécifié sur le réseau à partir duquel vous vous connectez et qu'il n'y a pas de réponse du serveur DHCP ou si la recherche inversée sur le serveur DNS distant échoue.

Vous pouvez facilement remplacer le paramètre par défaut en utilisant cette commande dans Terminal:

# sudo scutil --set HostName archos

Vous pouvez le vérifier en utilisant:

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

(où nn signifie l'adresse IP de votre Mac)

je vais
la source
6
@Gio Supprimez la clé HostName sous System de /Library/Preferences/SystemConfiguration/preferences.plist. Voir cette réponse .
Lri
2
@Gio: @ Le message de Lauri a une excellente information de fond, mais si vous voulez un raccourci: pour supprimer, exécutez sudo scutil --set HostName ''.
mklement0
3
Il HostNameest déconseillé de définir ce paramètre , car il crée une valeur distincte qui persiste même lorsque vous essayez ultérieurement de modifier le nom d'hôte via System Preferences > Sharing. En revanche, le réglage LocalHostNamemet à jour la même valeur et est normalement également repris par le shell et hostname(la ComputerNamevaleur doit être mise à jour simultanément). Ou bien le réglage HostNamese comporte-t-il différemment d'une manière avantageuse ici?
mklement0
1
une autre pour tester le nom d’hôte esthostname -f
ericn
2
J'ai eu cette difficulté sur 2 machines et les idées proposées dans la réponse de J. Hoover ci-dessous, et dans le commentaire de mklement0 ci-dessus, n'ont pas fonctionné. En d'autres termes, vous conseillez à tous les deux de ne modifier que les paramètres LocalHostName et ComputerName. Toutefois, leur modification n'a jamais modifié le terminal pour refléter le nom de l'ordinateur spécifié dans les préférences système. Dans mon cas, je pense que la raison en est que les deux machines étaient des sauvegardes Time Machine et conservaient les informations d'identification stockées localement à partir de l'ancienne image malgré le changement de nom que j'ai renommé à une date ultérieure. Seul HostName a fonctionné pour moi. FYI aux autres.
oemb1905
45

Vous voudrez peut-être aussi changer d'autres choses en utilisant la commande scutil:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
Jeffrey J. Hoover
la source
2
En changeant le nom dans Préférences Système-> Partage puis en utilisant scutilpour définir HostName, les deux ComputerNameet LocalHostNameétaient déjà définis avec le nouveau nom pour moi (en Mavericks). C'est bien de savoir que ces autres paramètres existent, cependant.
Jim Stewart
@JimStewart: En effet, c'est pourquoi il vaut mieux ne JAMAIS le définir HostName, car cela fera que cette valeur persistera même lorsque vous tenterez plus tard de changer votre nom d'hôte via les Préférences Système . A l' inverse, les LocalHostName est - repris par la coquille et hostname, donc HostNamen'est jamais nécessaire.
mklement0
Dans mon cas, j'avais une valeur LocalHostName incorrecte. En cours d'exécution sudo scutil --set LocalHostName ''supprimé LocalHostName et maintenant mon invite utilise ComputerName, qui a la valeur correcte.
marquer le
14

Il y a deux raisons possibles pour que le shell ( $HOSTNAMEvariable, '\h'in $PS1) et l' hostnameutilitaire signalent un nom d'hôte différent de celui présenté dans System Preferences > Sharing:

  • sudo scutil --set HostName newNamea été utilisé pour modifier le nom d'hôte de manière persistante - malheureusement, cette valeur est indépendante de la LocalHostNamevaleur définie par les préférences système en coulisse - même si man hostnamecette méthode est suggérée, NE L'UTILISEZ PAS, pour cette raison; courir sudo scutil --set HostName ''pour l'enlever , à quel point LocalHostNamedevrait à nouveau être signalé; pour le fond, voir ce post par @Lauri Ranta.

  • [ Mise à jour: Ce qui suit ne l' est plus que de Mac OS X 10.10 ] Si votre /etc/hostsfichier a une entrée qui correspond à l'adresse IP de votre machine, que le nom de l' entrée sera signalée.

Le shell ne hostnamereflétera la valeur définie dans les Préférences Système que si aucune de ces affirmations n'est vraie .


Si vous souhaitez modifier votre nom d'hôte à partir du shell , exécutez les deux opérations suivantes:

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

<newFriendlyName>peut être une version plus conviviale (espaces, ponctuation) de <newName>(caractères alphanumériques et tirets uniquement).

mklement0
la source
Malheureusement, le simple fait de régler ces deux-là ne semblait pas suffisant dans mon cas: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack
@rogerdpack: Et vous avez exécuté le sudo scutil --set HostName ''premier (le cas compte) et vous êtes assuré qu'il n'y a aucune entrée /etc/hosts? scutil --get HostNamedevrait signaler Hostname: not set.
mklement0
oui scutil --get HostName HostName: not set/ etc / hosts semble
anodin
1
@rogerdpack: question idiote: votre PS1variable n'a pas de nom d'hôte codé en dur plutôt que d'utiliser \h, n'est-ce pas? En passant: /etc/hostsn'est plus consulté depuis OSX 10.10 (j'ai mis à jour ma réponse).
mklement0
2
Magnifique. Supprimer le nom d’hôte (en lui attribuant la chaîne vide comme vous l’avez suggéré sudo scutil --set HostName '' :) permet à OS X de mapper le nom de l’ordinateur sur son adresse IP (par exemple, cela fonctionne maintenant ping <computername>).
Brent Faust
7

En plus du conseil de Jeffrey J. Hoover (ci-dessus) ,

J'ajouterais ces deux dernières étapes:

  • Videz le cache DNS en tapant: dscacheutil -flushcache
  • Redémarrez votre Mac.
Danger14
la source
5

Je conviens que le conseil de Jeffrey Hoover était la bonne réponse. Vider le cache DNS et redémarrer le Mac est également une bonne étape. Ceci est une variante de la réponse de Jeff Hoover:

sudo -i
Password:

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

exit
utilisateur67806
la source
1
Il te manque un -: ça doit être --setpour travailler. En outre, comme je l'ai commenté dans la réponse de Jeff: il est probablement préférable de ne pas définir HostName.
mklement0
4

Préférences Système -> Partage -> Nom de l'ordinateur -> définissez-le comme bon vous semble

Et puis redémarrez votre ordinateur. Aucune commande de console n'était nécessaire. Fonctionne pour OS X 10.10.2

Terry Bu
la source
Le 10.14.6, je suis tombé sur une situation où le partage -> nom de l'ordinateur a été défini comme je le voulais mais qui a été hostnamerenvoyé "MacBook-Pro". Je l'ai même changé et j'avais toujours le problème. Je n'ai jamais vu ce problème auparavant. Les scutilcommandes ont fonctionné pour moi. Je me demande où et comment vous êtes censés faire cela via l'interface graphique.
pedz
3

Utilisez ceci

sudo systemsetup -setcomputername $name
Quanlong
la source
2

J'ai eu le problème que seul le shell lui-même ( zshdans mon cas) n'a pas réussi à afficher le nom d'ordinateur correct. Redémarrer simplement le shell a résolu le problème:

exec /bin/zsh
Magnus Gustavsson
la source
2

Outre la réponse précédente, rappelez-vous que vous pouvez utiliser une adresse statique dans votre routeur. Vous devez entrer l'adresse IP statique et l'adresse MAC de votre carte réseau, puis vous devez lui donner un nom. Le nom d'hôte sera automatiquement mis à jour avec le nom spécifié. C'est ça.

nom
la source