Nama komputer OS X tidak cocok dengan yang ditampilkan di terminal


119

Nama komputer saya di System Preferences> sharing diatur ke "archos" tetapi ditampilkan sebagai "iphone" di terminal. Itu baru mulai melakukan ini setelah saya memuat Xcode untuk melakukan pengembangan iPhone.

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

Apakah anda mengetahui apa yang bisa menyebabkan ini terjadi?


apa yang Anda dapatkan ketika Anda mengetik echo $ HOSTNAME
Daniel

1
ini aneh ... Saya mendapatkan 'archos.local' untuk echo $ HOSTNAME. Saya melakukan writeup awal ketika saya berada di kantor, tetapi di jaringan rumah saya kembali normal. Saya ingin tahu apakah ini ada hubungannya dengan jaringan kerja saya?
Travis Nelson

Jawaban:


94

Ini sangat normal untuk ini terjadi; ketika Anda masuk Terminal bash jarak jauh melakukan pencarian DNS terbalik. Hanya akan sama jika nama host tidak ditentukan pada jaringan yang Anda hubungkan dan tidak ada balasan dari server DHCP, atau pencarian sebaliknya terhadap server DNS jauh gagal diselesaikan.

Anda dapat dengan mudah menaiki pengaturan default dengan menggunakan perintah ini di Terminal:

# sudo scutil --set HostName archos

Anda dapat memeriksanya dengan menggunakan:

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

(di mana nn menandakan alamat IP Mac Anda)


6
@Gio Hapus kunci HostName di bawah Sistem dari /Library/Preferences/SystemConfiguration/preferences.plist. Lihat jawaban ini .
Lri

2
@Gio: @ Posting Lauri memiliki informasi latar belakang yang sangat baik, tetapi jika Anda ingin pintasan: untuk menghapus, jalankan sudo scutil --set HostName ''.
mklement0

3
Pengaturan HostNametidak disarankan, karena itu menciptakan nilai terpisah yang kemudian tetap ada bahkan ketika Anda kemudian mencoba mengubah nama host melalui System Preferences > Sharing. Sebaliknya, pengaturan LocalHostNamememperbarui nilai yang sama, dan biasanya juga diambil oleh shell dan hostname( ComputerNamenilai harus diperbarui bersama-sama). Atau apakah pengaturan HostNameberperilaku berbeda dengan cara yang menguntungkan di sini?
mklement0

1
lain untuk menguji nama host adalahhostname -f
ericn

2
Saya mengalami kesulitan ini pada 2 mesin dan ide-ide yang diusulkan dalam jawaban oleh J.Hoover di bawah ini, dan dalam komentar oleh mklement0 di atas, tidak berhasil. Yaitu, Anda berdua menyarankan agar seseorang hanya mengubah LocalHostName dan ComputerName, namun mengubah ini tidak pernah mengubah Terminal untuk mencerminkan Nama Komputer yang ditentukan dalam System Preferences. Saya percaya alasan untuk ini, dalam kasus saya, adalah bahwa kedua mesin adalah cadangan Time Machine dan mempertahankan kredensial yang disimpan secara lokal dari gambar lama meskipun saya mengganti nama di kemudian hari. Hanya HostName yang bekerja untuk saya. FYI kepada orang lain.
oemb1905

45

Anda mungkin juga ingin mengubah beberapa hal lain menggunakan perintah scutil:

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

2
Dengan mengubah nama di System Preferences-> Sharing dan kemudian menggunakan scutiluntuk mengatur HostName, keduanya ComputerNamedan LocalHostNamesudah diatur ke nama baru untuk saya (di Mavericks). Senang mengetahui bahwa ada pengaturan lain ini.
Jim Stewart

@JimStewart: Memang, itu sebabnya lebih baik untuk TIDAK PERNAH mengatur HostName, karena hal itu akan membuat nilai itu tetap ada bahkan ketika Anda kemudian mencoba mengubah nama host Anda melalui System Preferences . Sebaliknya, LocalHostName yaitu dijemput oleh shell dan hostname, sehingga HostNametidak pernah diperlukan.
mklement0

Dalam kasus saya, saya memiliki nilai LocalHostName yang salah. Menjalankan sudo scutil --set LocalHostName ''LocalHostName yang dihapus dan sekarang prompt saya menggunakan ComputerName, yang memiliki nilai yang benar.
tandai

14

Ada dua alasan potensial untuk shell ( $HOSTNAMEvariabel, '\h'dalam $PS1) dan hostnameutilitas untuk melaporkan nama host yang berbeda dari yang ditunjukkan pada System Preferences > Sharing:

  • sudo scutil --set HostName newNamedigunakan untuk secara terus-menerus mengubah nama host - sayangnya, nilai ini tidak tergantung pada LocalHostNamenilai yang ditetapkan oleh System Preferences di belakang layar - meskipun man hostnamemenyarankan metode ini, JANGAN GUNAKANNYA karena alasan itu; jalankan sudo scutil --set HostName ''untuk menghapusnya , pada titik mana LocalHostNameharus dilaporkan lagi; untuk latar belakang, lihat posting ini oleh @Luriuri Ranta.

  • [ Update: Berikut ini adalah tidak lagi benar sebagai OSX 10.10 ] Jika Anda /etc/hostsberkas memiliki sebuah entri yang cocok dengan alamat IP mesin Anda, bahwa nama entri akan dilaporkan.

Hanya jika tidak satu pun di atas yang benar yang akan shell dan hostnamemencerminkan nilai yang ditetapkan melalui System Preferences.


Jika Anda ingin mengubah nama host Anda dari shell , jalankan kedua hal berikut:

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

di mana <newFriendlyName>bisa menjadi versi yang lebih ramah (spasi, tanda baca) dari <newName>(hanya alfanumerik dan tanda hubung).


sayangnya, hanya mengatur keduanya tampaknya tidak cukup dalam kasus saya: gist.github.com/rdp
71d5368087b94b5ea55a

@rogerdpack: Dan Anda sudah menjalankan sudo scutil --set HostName ''lebih dulu (penting) dan memastikan tidak ada entri /etc/hosts? scutil --get HostNameharus melaporkan Hostname: not set.
mklement0

yeah scutil --get HostName HostName: not set/ etc / hosts sepertinya jinak ...
rogerdpack

1
@rogerdpack: Pertanyaan konyol: PS1variabel Anda tidak memiliki nama host yang dikodekan daripada menggunakan \h, bukan? Sebagai tambahan: /etc/hoststidak lagi dikonsultasikan pada OSX 10.10 (saya telah memperbarui jawaban saya).
mklement0

2
Cantik. Menghapus nama host (dengan menyetelnya ke string kosong seperti yang Anda sarankan:) sudo scutil --set HostName '' sekali lagi memungkinkan OS X untuk memetakan nama komputer ke alamat IP-nya (mis. Ini sekarang berfungsi ping <computername>).
Brent Faust


5

Saya setuju bahwa tip Jeffrey Hoover adalah jawaban yang benar. Membilas cache DNS dan memulai ulang Mac adalah langkah yang bagus juga. Ini adalah varian dari jawaban Jeff Hoover:

sudo -i
Password:

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

exit

1
Anda melewatkan -: itu pasti --setbekerja. Juga, ketika saya mengomentari jawaban Jeff: mungkin lebih baik untuk tidak mengatur HostName.
mklement0

4

Preferensi Sistem -> Berbagi -> Nama Komputer -> atur ke apa pun

Dan kemudian restart komputer Anda. Tidak ada perintah konsol yang diperlukan. Bekerja untuk OS X 10.10.2


Pada 10.14.6, saya mengalami situasi di mana Berbagi -> Nama Komputer diatur seperti yang saya inginkan namun hostnamemengembalikan "MacBook-Pro". Saya bahkan mengubahnya dan masih punya masalah. Saya belum pernah melihat masalah ini sebelumnya. The scutilperintah bekerja untuk saya. Saya bertanya-tanya di mana / bagaimana Anda seharusnya melakukan itu melalui antarmuka GUI.
pedz



2

Saya punya masalah hanya shell itu sendiri ( zshdalam kasus saya) gagal menunjukkan nama komputer yang benar. Cukup restart shell yang memecahkannya:

exec /bin/zsh

2

Selain jawaban sebelumnya, ingatlah bahwa Anda dapat menggunakan alamat statis di router Anda. Anda harus memasukkan IP statis dan alamat MAC kartu jaringan Anda, kemudian Anda menetapkan nama untuk itu. Nama host akan secara otomatis diperbarui ke nama yang ditentukan. Itu dia.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.