El nombre de la computadora OS X no coincide con lo que se muestra en la terminal

117

El nombre de mi computadora en Preferencias del sistema> compartir está configurado en "archos" pero se muestra como "iphone" en el terminal. Simplemente comenzó a hacer esto después de cargar Xcode para hacer el desarrollo de iPhone.

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

¿Alguna idea de que puede estar causando esto?

Travis Nelson
fuente
¿Qué obtienes cuando escribes echo $ HOSTNAME
Daniel
1
esto es raro ... Estoy obteniendo 'archos.local' para echo $ HOSTNAME. Hice la redacción inicial cuando estaba en la oficina, pero en mi red doméstica ha vuelto a la normalidad. Me pregunto si esto tiene algo que ver con mi red de trabajo.
Travis Nelson

Respuestas:

92

Es perfectamente normal que esto ocurra; cuando inicia sesión en Terminal de forma remota, bash realiza una búsqueda inversa de DNS. Solo será lo mismo si el nombre de host no se especifica en la red desde la que se está conectando y no hay respuesta del servidor DHCP, o si la búsqueda inversa en el servidor DNS remoto no se resuelve.

Puede anular fácilmente la configuración predeterminada utilizando este comando en la Terminal:

# sudo scutil --set HostName archos

Puede verificarlo usando:

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

(donde nn significa la dirección IP de su Mac)

l'L'l
fuente
66
@Gio Elimine la clave HostName en Sistema de /Library/Preferences/SystemConfiguration/preferences.plist. Mira esta respuesta .
Lri
2
@Gio: la publicación de @Lauri tiene excelente información de fondo, pero si desea un acceso directo: para eliminar, ejecute sudo scutil --set HostName ''.
mklement0
3
La configuración HostNameno es recomendable, ya que crea un valor separado que luego persiste incluso cuando más tarde intente cambiar el nombre de host a través de System Preferences > Sharing. Por el contrario, la configuración LocalHostNameactualiza el mismo valor, y normalmente también lo recoge el shell y hostname(el ComputerNamevalor debe actualizarse en tándem). ¿O la configuración se HostNamecomporta de manera diferente de una manera que es ventajosa aquí?
mklement0
1
otro para probar el nombre del host eshostname -f
ericn
2
Tuve esta dificultad en 2 máquinas y las ideas propuestas en la respuesta de J.Hoover a continuación, y en el comentario de mklement0 arriba, no funcionaron. Es decir, ambos informan que uno solo cambia el LocalHostName y el ComputerName, sin embargo, cambiar estos nunca cambió el Terminal para reflejar el Nombre del equipo especificado en las Preferencias del sistema. Creo que la razón de esto, en mi caso, es que ambas máquinas eran copias de seguridad de Time Machine y retuvieron las credenciales almacenadas localmente de la imagen anterior a pesar de que cambié el nombre en una fecha posterior. Solo HostName funcionó para mí. FYI a los demás.
oemb1905
45

También es posible que desee cambiar algunas otras cosas usando el comando scutil:

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "newname"
Jeffrey J. Hoover
fuente
2
Al cambiar el nombre en Preferencias del sistema-> Compartir y luego usar scutilpara configurar HostName, ambos ComputerNameya LocalHostNameestaban configurados con el nuevo nombre para mí (en Mavericks). Sin embargo, es bueno saber que estas otras configuraciones existen.
Jim Stewart el
@JimStewart: De hecho, es por eso que NUNCA es mejor configurarlo HostName, porque hacerlo hará que ese valor persista incluso cuando luego intente cambiar su nombre de host a través de Preferencias del Sistema . A la inversa, los LocalHostName es recogido por la carcasa y hostname, por lo HostNameque nunca se necesita.
mklement0
En mi caso, tenía un valor LocalHostName incorrecto. Ejecutando sudo scutil --set LocalHostName ''LocalHostName eliminado y ahora mi solicitud está usando ComputerName, que tiene el valor correcto.
marca el
14

Hay dos posibles razones para que el shell ( $HOSTNAMEvariable, '\h'in $PS1) y la hostnameutilidad informen un nombre de host que difiere del que se muestra en System Preferences > Sharing:

  • sudo scutil --set HostName newNamese usó para cambiar persistentemente el nombre de host; desafortunadamente, este valor es independiente del LocalHostNamevalor establecido por las Preferencias del sistema detrás de escena, aunque man hostnamesugiere este método, NO LO USE por ese motivo; ejecutar sudo scutil --set HostName ''para eliminarlo , en cuyo punto se LocalHostNamedebe informar nuevamente; para el fondo, vea esta publicación de @Lauri Ranta.

  • [ Actualización: lo siguiente ya no es cierto a partir de OSX 10.10 ] Si su /etc/hostsarchivo tiene una entrada que coincide con la dirección IP de su máquina, se informará el nombre de esa entrada.

Solo si ninguno de los anteriores es verdadero, el shell y hostnamereflejará el valor establecido a través de Preferencias del sistema.


Si desea cambiar su nombre de host desde el shell , ejecute los dos siguientes:

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

donde <newFriendlyName>puede ser una versión más amigable (espacios, puntuación) de <newName>(alfanuméricos y guiones solamente).

mklement0
fuente
desafortunadamente, solo configurar esos dos no parecía ser suficiente en mi caso: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack
@rogerdpack: ¿Y has corrido sudo scutil --set HostName ''primero (el caso importa) y te has asegurado de que no haya entrada /etc/hosts? scutil --get HostNameDebería informar Hostname: not set.
mklement0
scutil --get HostName HostName: not set/ etc / hosts parece benigno ...
rogerdpack
1
@rogerdpack: Pregunta tonta: su PS1variable no tiene un nombre de host codificado en lugar de usar \h, ¿verdad? Como comentario: /etc/hostsya no se consulta a partir de OSX 10.10 (he actualizado mi respuesta).
mklement0
2
Hermoso. Al eliminar el nombre de host (configurándolo en la cadena vacía como sugirió sudo scutil --set HostName '' ), nuevamente, OS X puede asignar el nombre de la computadora a su dirección IP (por ejemplo, esto ahora funciona ping <computername>).
Brent Faust
5

Estoy de acuerdo en que el consejo de Jeffrey Hoover fue la respuesta correcta. Vaciar el caché DNS y reiniciar la Mac también es un buen paso. Esta es una variante de la respuesta de Jeff Hoover:

sudo -i
Password:

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

exit
usuario67806
fuente
1
Te falta un -: debe ser --setpara trabajar. Además, como comenté en la respuesta de Jeff: probablemente sea mejor no configurar HostName.
mklement0
4

Preferencias del sistema -> Compartir -> Nombre del equipo -> configúrelo en lo que sea

Y luego reinicie su computadora. No se necesitaban comandos de consola. Funciona para OS X 10.10.2

Terry Bu
fuente
3

Utilizar esta

sudo systemsetup -setcomputername $name
Quanlong
fuente
2

Tuve el problema de que solo el shell ( zshen mi caso) no pudo mostrar el nombre correcto de la computadora. Simplemente reiniciando el shell lo resolvió:

exec /bin/zsh
Magnus Gustavsson
fuente
2

Además de la respuesta anterior, recuerde que puede usar una dirección estática en su enrutador. Debe ingresar la dirección IP estática y la dirección MAC de su tarjeta de red, luego establecer un nombre para ella. El nombre de host se actualizará automáticamente al nombre especificado. Eso es.

sustantivo
fuente