OS X कंप्यूटर का नाम मिलान नहीं है जो टर्मिनल पर दिखाता है


119

सिस्टम वरीयताएँ> साझाकरण में मेरा कंप्यूटर नाम "तोरण" पर सेट है, लेकिन टर्मिनल पर "iphone" के रूप में दिखाई दे रहा है। IPhone के विकास के लिए Xcode लोड करने के बाद मैंने इसे करना शुरू कर दिया।

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

इसक क्या कारण हो सकता है कोई विचार?


क्या आप जब तुम गूंज $ HOSTNAME टाइप मिलता है
डैनियल

1
यह अजीब है ... मैं $ $ $ के लिए 'आर्चोस.लोकल' प्राप्त कर रहा हूं। जब मैं कार्यालय में था, तब मैंने शुरुआती राइटअप किया था, लेकिन अपने होम नेटवर्क पर यह सामान्य स्थिति में है। मुझे आश्चर्य है कि अगर यह मेरे काम के नेटवर्क के साथ कुछ करना है?
ट्रैविस नेल्सन

जवाबों:


94

ऐसा होना पूरी तरह से सामान्य है; जब आप टर्मिनल को दूरस्थ रूप से लॉगिन करते हैं, तो रिवर्स DNS लुकअप करता है। यह केवल वही होगा जब होस्टनाम आपके द्वारा कनेक्ट किए जा रहे नेटवर्क पर निर्दिष्ट नहीं है और डीएचसीपी सर्वर से कोई उत्तर नहीं है, या दूरस्थ DNS सर्वर के खिलाफ रिवर्स लुकअप हल करने में विफल रहता है।

टर्मिनल में इस कमांड का उपयोग करके आप डिफ़ॉल्ट सेटिंग को आसानी से ओवर-राइड कर सकते हैं:

# sudo scutil --set HostName archos

आप इसका उपयोग करके देख सकते हैं:

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

(जहां nn आपके मैक के आईपी पते को दर्शाता है)


6
@Gio सिस्टम से /Library/Preferences/SystemConfiguration/preferences/plist के तहत होस्टनाम कुंजी को हटाएं। इस जवाब को देखें ।
LRI

2
@Gio: @ लॉरी की पोस्ट में उत्कृष्ट पृष्ठभूमि की जानकारी है, लेकिन यदि आप शॉर्टकट चाहते हैं: हटाना, चलाना sudo scutil --set HostName ''
mklement0

3
सेटिंग करना HostNameउचित नहीं है, क्योंकि यह एक अलग मूल्य बनाता है जो तब भी बना रहता है जब आप बाद में होस्टनाम बदलने की कोशिश करते हैं System Preferences > Sharing। इसके विपरीत, LocalHostNameउसी मूल्य को अपडेट करना, और आमतौर पर शेल द्वारा भी उठाया जाता है और hostname( ComputerNameमूल्य अग्रानुक्रम में अद्यतन किया जाना चाहिए)। या सेटिंग HostNameअलग तरीके से व्यवहार करती है जो यहां लाभप्रद है?
mklement0

1
होस्ट नाम का परीक्षण करने के लिए एक और हैhostname -f
ericn

2
मुझे 2 मशीनों पर यह कठिनाई हुई और नीचे दिए गए J.Hoover द्वारा उत्तर में प्रस्तावित विचारों, और ऊपर mklement0 द्वारा टिप्पणी में काम नहीं किया। अर्थात्, आप दोनों सलाह दे रहे हैं कि कोई केवल LocalHostName और ComputerName को बदल दे, हालाँकि, इनको बदलने से सिस्टम प्रेफरेंस में निर्दिष्ट कंप्यूटर नाम को प्रतिबिंबित करने के लिए टर्मिनल कभी नहीं बदलता है। मुझे विश्वास है कि इसका कारण, मेरे मामले में, यह है कि दोनों मशीनें टाइम मशीन बैकअप थीं और बाद की तारीख में नाम बदलने के बावजूद पुरानी छवि से स्थानीय रूप से संग्रहीत क्रेडेंशियल्स को बनाए रखा। केवल HostName ने मेरे लिए काम किया। दूसरों को FYI करें।
oemb1905

45

आप स्कूटिल कमांड का उपयोग करके कुछ अन्य चीजों को बदलना चाह सकते हैं:

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

2
सिस्टम प्रेफरेंस में नाम बदलकर-> शेयरिंग और फिर scutilसेट करने के लिए उपयोग करना HostName, दोनों ComputerNameऔर LocalHostNameपहले से ही मेरे लिए (Mavericks में) नए नाम पर सेट थे। यह जानकर अच्छा लगा कि ये अन्य सेटिंग्स मौजूद हैं, हालांकि।
जिम स्टीवर्ट 19

@JimStewart: वास्तव में, यही कारण है कि इसे सेट करना बेहतर है HostName, क्योंकि ऐसा करने से वह मूल्य तब भी बना रहेगा जब आप बाद में सिस्टम प्राथमिकता के माध्यम से अपने होस्टनाम को बदलने का प्रयास करेंगे । इसके विपरीत, LocalHostName यह है खोल द्वारा उठाया और hostname, इसलिए HostNameआवश्यकता नहीं है।
mklement0

मेरे मामले में मेरा एक गलत लोकलहोस्टनाम मान था। sudo scutil --set LocalHostName ''हटाए गए LocalHostName को चला रहा है और अब मेरा संकेत ComputerName का उपयोग कर रहा है, जिसका सही मूल्य है।
मार्क

14

शेल ( $HOSTNAMEचर, '\h'में $PS1) और hostnameएक होस्टनाम की रिपोर्ट करने की उपयोगिता के लिए दो संभावित कारण हैं जो एक में दिखाए गए से अलग है System Preferences > Sharing:

  • sudo scutil --set HostName newNameहोस्टनाम को लगातार बदलने के लिए उपयोग किया गया था - दुर्भाग्यवश, यह मूल्य पर्दे के पीछे सिस्टम प्राथमिकता द्वारा निर्धारित मूल्य से स्वतंत्र है LocalHostName- भले ही man hostnameइस पद्धति का सुझाव देता है, उस कारण से इसका उपयोग न करें ; चलाने sudo scutil --set HostName ''इसे हटाने के लिए , जिस बिंदु पर LocalHostNameफिर से सूचित किया जाना चाहिए; पृष्ठभूमि के लिए, @Lauri Ranta की इस पोस्ट को देखें ।

  • [ अद्यतन: निम्नलिखित OSX 10.10 के रूप में अब सच नहीं है ] यदि आपकी /etc/hostsफ़ाइल में एक प्रविष्टि है जो आपके मशीन के आईपी पते से मेल खाती है, तो उस प्रविष्टि का नाम सूचित किया जाएगा।

यदि उपरोक्त में से कोई भी सत्य नहीं है तो केवल शेल और hostnameसिस्टम प्राथमिकता के माध्यम से निर्धारित मूल्य को प्रतिबिंबित करेगा।


यदि आप शेल से अपना होस्टनाम बदलना चाहते हैं , तो निम्न में से दोनों चलाएं :

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

जहां (अल्फ़ान्यूमेरिक्स और डैश केवल) का <newFriendlyName>एक मित्र संस्करण (रिक्त स्थान, विराम चिह्न) हो सकता है <newName>


दुर्भाग्य से, बस उन दोनों को सेट करना मेरे मामले में पर्याप्त नहीं था: gist.github.com/rdp/71d5368087b94b5ea55a
rogerdpack

@rogerdpack: और आपने sudo scutil --set HostName ''पहले (केस मामलों) चलाया है और यह सुनिश्चित किया है कि इसमें कोई प्रविष्टि नहीं है /etc/hosts? scutil --get HostNameरिपोर्ट करनी चाहिए Hostname: not set
mklement0

हाँ scutil --get HostName HostName: not set/ आदि / मेजबानों सौम्य लगता है ...
1939 पर rogerdpack

1
@rogerdpack: मूर्खतापूर्ण सवाल: आपके PS1चर का उपयोग करने के बजाय एक हार्ड-कोडित होस्टनाम होने की ज़रूरत नहीं है \h, क्या यह करता है? एक तरफ के रूप में: /etc/hostsअब OSX 10.10 के रूप में परामर्श नहीं किया गया है (मैंने अपना उत्तर अपडेट कर दिया है)।
mklement0

2
सुंदर। होस्टनाम को हटाकर (जैसा कि आपने सुझाव दिया था, उसे खाली स्ट्रिंग पर सेट करके sudo scutil --set HostName '' ) फिर से ओएस एक्स को कंप्यूटर का नाम उसके आईपी पते पर मैप करने की अनुमति देता है (उदाहरण के लिए, यह अब काम करता है ping <computername>)।
ब्रेंट फस्ट


5

मैं सहमत हूं कि जेफरी हूवर की टिप सही जवाब थी। DNS कैश फ्लश करना और मैक को पुनरारंभ करना भी एक अच्छा कदम है। यह जेफ हूवर के उत्तर का प्रकार है:

sudo -i
Password:

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

exit

1
आप याद कर रहे हैं -: यह --setकाम करने के लिए होना चाहिए । इसके अलावा, जैसा कि मैंने जेफ के जवाब पर टिप्पणी की: यह शायद सेट नहीं करना बेहतर है HostName
mklement0

4

सिस्टम वरीयताएँ -> साझाकरण -> कंप्यूटर का नाम -> इसे जो भी सेट करें

और फिर अपने कंप्यूटर को रीस्टार्ट करें। कोई कंसोल कमांड आवश्यक नहीं थे। OS X 10.10.2 के लिए काम करता है


10.14.6 को, मेरे पास एक ऐसी स्थिति थी जहां साझाकरण -> कंप्यूटर का नाम उस तरह सेट किया गया था जैसा मैं चाहता था कि यह अभी भी hostname"मैकबुक-प्रो" वापस आए। मैंने इसे बदल भी दिया और अभी भी समस्या थी। मैंने इस मुद्दे को पहले कभी नहीं देखा है। scutilआदेशों मेरे लिए काम किया। मैं सोच रहा हूँ कि GUI इंटरफ़ेस के माध्यम से आप कहाँ / कैसे कर रहे हैं।
16

3

जैसा कि एक अलग उत्तर में उल्लेख किया गया है, एक अन्य विकल्प डिफ़ॉल्ट PS1 प्रॉम्प्ट को ओवरराइड करना है, जैसे कि निम्न पंक्ति निष्पादित करना (या इसे आपकी ~ / .bash_profile फ़ाइल में जोड़ना):

 $ PS1="$(scutil --get ComputerName):\W \u\\$ "

refs:

https://superuser.com/a/414903/39364

http://www.cnet.com/news/keep-your-command-prompt-host-name-static-in-os-x-and-other-unix-systems/



2

मुझे यह समस्या थी कि केवल शेल ( zshमेरे मामले में) सही कंप्यूटर नाम दिखाने में विफल रहा। बस शेल को पुनरारंभ करने से इसे हल किया गया:

exec /bin/zsh

2

पिछले उत्तर के अलावा, याद रखें कि आप अपने राउटर में एक स्थिर पते का उपयोग कर सकते हैं। आपको अपने नेटवर्क कार्ड के स्थैतिक आईपी और मैक पते को दर्ज करना होगा, फिर आप इसके लिए एक नाम निर्धारित करेंगे। होस्टनाम स्वचालित रूप से निर्दिष्ट नाम पर अपडेट किया जाएगा। बस।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.