मैंने अपना होस्टनाम बदल दिया है, मेरा बैश PS1 प्रॉम्प्ट अपरिवर्तित क्यों है


21

मैंने संपादन / etc / hostname द्वारा अपना होस्टनाम बदल दिया है hostnameऔर hostname -Fआदेशों का उपयोग करके नया होस्टनाम देख सकता हूँ ।

लेकिन शेल प्रॉम्प्ट अभी भी पुराना होस्टनाम दिखा रहा है।

यह उबंटू 11.0.4 है। प्रॉम्प्ट मेरे में सेट है .bashrcजिसे मैंने संपादित नहीं किया है। लॉग आउट करना और यहां तक ​​कि रिबूटिंग का कोई प्रभाव नहीं है।

मानक उबंटू का प्रासंगिक खंड .bashrc:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

($ debian_chroot मेरे लॉगिन के रूप में परेशान है ...)

मुझे लगता है कि hostname विशेष वर्ण \ h द्वारा उठाया गया है।

शेल में बताई गई PS1 सेटिंग यहां दी गई है:

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

और यहाँ PS1 दिखाता है:

username@oldhostname:~$ 

मैंने वॉरेन के उत्तर में सटीक कमांड का उपयोग करके प्रक्रिया को दोहराया। यह पता चलता है कि होस्टनाम रिबूट तक काम करता है, लेकिन फिर यह खो जाता है, भले ही /etc/hostnameनया होस्टनाम शामिल हो।


क्या echo $PS1दिखाता है?
कीथ

@ कीथ - मैंने PS1 दिखाने के लिए प्रश्न को अपडेट किया।
डिज्ले

अपडेट के लिए धन्यवाद, जिसने मुझे फेंक दिया क्योंकि मुझे याद नहीं था कि dhcp ऐसा कर सकता है क्योंकि मैंने इसे कभी नहीं होने दिया। वापस आने के लिए धन्यवाद और सवाल के शीर्ष पर रहने और (अंततः) एक उत्तर के रूप में अपने संपादन को जोड़ने के लिए, unix.SE में आपका स्वागत है!
कालेब

जवाबों:


24

कीथ और वारेन द्वारा पिछले उत्तर के प्रकाश में, और वास्तविक संकल्प के अनुसार, मैं अपने प्रश्न का उत्तर दे रहा हूं। कथित समस्या थी "मैंने अपना होस्टनाम बदल दिया है, मेरा बैश PS1 प्रॉम्प्ट अपरिवर्तित क्यों है?" वास्तविक समस्या यह थी कि "मेरा सिस्टम रिबूट पर अपने पुराने होस्टनाम पर वापस क्यों आ गया है?"

इस विशेष मामले में उत्तर था: डीएचसीपी स्थानीय सेटिंग्स को ओवरराइड करने के लिए कॉन्फ़िगर किया गया है।

होस्टनाम बदलने का एक प्रभावी तरीका

निम्नलिखित Ubuntu, ymmv पर लागू होता है ।

  1. फ़ाइल को संपादित करके लगातार होस्टनाम बदलें /etc/hostname

    echo 'mynewhostname' | sudo tee /etc/hostname
  2. रनिंग सिस्टम के लिए होस्टनाम बदलने के लिए होस्टनाम कमांड का उपयोग करें । चरण 1 के बिना यह रिबूट पर रीसेट हो जाएगा। यह आपके द्वारा निर्धारित मूल्य का उपयोग करने के लिए समझ में आता है:

    sudo hostname -F /etc/hostname

    या इसके समकक्ष:

    sudo hostname `cat /etc/hostname`
  3. में पूरी तरह से योग्य डोमेन नाम (FQDN) सेट करें /etc/hosts

    अंश:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
  4. जांचें कि क्या मशीन एक डीएचसीपी क्लाइंट चला रही है। आईपी ​​पते के अलावा, एक डीएचसीपी सर्वर होस्टनाम और डीएनएस रिज़ॉल्यूशन जैसी सेटिंग्स को अच्छी तरह से ओवरराइड कर सकता है। एक "क्लाउड" होस्टिंग सेवा ऐसा कर सकती है, इसलिए डिस्क पर एक मशीन की छवि को कॉन्फ़िगरेशन फ़ाइलों को संपादित किए बिना कई बार पुन: उपयोग किया जा सकता है।

    यदि यह मौजूद है, /etc/default/dhcpcdतो SET_HOSTNAMEनिर्देश को टिप्पणी करने के लिए डीएचसीपी क्लाइंट कॉन्फ़िगरेशन फ़ाइल को संपादित करें :

    #SET_HOSTNAME='yes'
  5. जब संभव हो, सिस्टम को रिबूट करें और जांचें कि नाम बदल गया है:

    hostname

चरण 4 मेरे लिए समाचार था और मुझे पकड़ा। मुझे लगा कि इस उत्तर में पूरी प्रक्रिया का दस्तावेजीकरण करना उपयोगी होगा। यह कदम मेरी होस्टिंग सेवा के निर्देशों (शिष्टाचार) के सौजन्य से है जिसे मुझे वास्तव में ठीक से पढ़ना चाहिए था।


यदि यह उत्तर उचित लगता है, तो दूसरों के द्वारा की गई सराहना की सराहना की जाएगी क्योंकि मैं अपने स्वयं के उत्तर के लिए वोट नहीं कर सकता।
डिज्ले

2

फ़ाइल /etc/hostnameहोस्टनाम की लगातार प्रतिलिपि रखती है, और रन-टाइम कॉपी सेट करने के लिए बूटअप के दौरान उपयोग की जाती है। रिबूट किए बिना रन-टाइम कॉपी बदलने के लिए, कहें:

$ sudo hostname `cat /etc/hostname`

या hostname(1)कमांड के पैरामीटर के रूप में नया होस्ट नाम पास करें ।


मेरी समस्या दृढ़ता में है। मैंने रनटाइम होस्टनाम का उपयोग और सत्यापन किया (प्रश्न देखें)। इसके अलावा, "sudo hostname -F / etc / hostname" कमांड (आदमी होस्टनाम) का एक वैकल्पिक रूप है। हालाँकि, जैसा कि आपने सुझाव दिया था। रिबूट पर होस्टनाम खो गया है। :( मैंने FQDN को /etc/host.conf और /etc/host.conf में भी डाल दिया है, केवल बाइंड का उपयोग करने के लिए सेट है। मैं अभी भी नुकसान में हूँ।
Dizzley

मैंने एक रिज़ॉल्यूशन के साथ क्यू को अपडेट किया है और थोड़ी देर में अपने खुद के सवाल का जवाब दूंगा। धन्यवाद वॉरेन / कीथ।
डिजले

यह होना चाहिए था 'मैं भी FQDN / etc / मेजबान में डाल दिया है।'
डिज्ले

-1

मुझे लगता है कि आपके पास /hहै PS1और फिर FQDN का उल्लेख करें, अब, क्या आप अपने पुराने और एक नए होस्टनाम को पोस्ट कर सकते हैं जिसे आप उपयोग करने की कोशिश कर रहे हैं?

  • /h पहले तक होस्टनाम दिखाता है '।'
  • /H पूरा FQDN दिखाता है

कोशिश तो करो


हाय njekto। NB यह \ h नहीं / एच है। मैं अपने होस्टनाम को निजी रखना पसंद करता हूं जब यह "पुराना नाम" और "नया नाम" (कोई डॉट्स) नहीं है। मैं यूनिक्स में एक पुराना हाथ हूं, लेकिन इसने मुझे स्टम्प किया था - मैंने कभी भी dhcpcd को इस तरह इस्तेमाल नहीं किया। ऐसा लग रहा था कि PS1 प्रॉम्प्ट गलत था, लेकिन वास्तविक समस्या थी / etc / hostname बूट पर dhcpcd द्वारा अधिलेखित है। Dhcpcd का उपयोग किया जाता है क्योंकि मेरी मशीन की छवि को दूसरे आईपी एड्रेस सेटअप पर फिर से तैयार या डुप्लिकेट किया जा सकता है, इसलिए मेरे होस्टर, लिनोइड, डीएचसीपी का उपयोग करके डिफ़ॉल्ट मान उत्पन्न करते हैं, इसलिए मेरी यूबंटो छवि का प्रत्येक उदाहरण अद्वितीय है। मैं क्लाउड बिगिनर हूं, इसलिए यह एक तरह से मजेदार रहा।
डिज्ले

-1
  • hअपने में कैपिटलाइज़ करें PS1:

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.