Ubuntu पर बैश प्रॉम्प्ट - FQDN (\ H) होस्टनाम के समान (\ h)


14

हमें विकास, परीक्षण, एकीकरण और मंचन के लिए अपने कार्यस्थल पर अलग वातावरण मिला है।

उन एनवीएस के भीतर, हमने DNS में होस्टनामों को अधिभारित किया है - उदाहरण के लिए देव वातावरण में, प्राथमिक वेब मशीन कहा जाता है web1.dev.example.com, और परीक्षण वातावरण में, प्राथमिक वेब मशीन है web1.test.example.com

विभिन्न वातावरणों में मशीनों के बीच अंतर करने के लिए, मैं केवल होस्टनाम के बजाय FQDN को प्रदर्शित करने के लिए bash प्रॉम्प्ट को अनुकूलित करना चाहता हूं। सही और उचित; मैं बदलने के लिए सक्षम होना चाहिए \hसाथ \Hमें $PS1, है ना? हम्म। वे ठीक यही बात दिखाते हैं।

me@web1:~$ hostname
web1
me@web1:~$ hostname -f
web1.dev.example.com
me@web1:~$ export PS1="\[\u@\h: \w\]\$ "
me@web1: ~$ export PS1="\[\u@\H: \w\]\$ "
me@web1: ~$ 

में /etc/hostname, मुझे सिर्फ hostname ( web1) मिला है । hostnameऔर hostname -fदोनों सही परिणाम ("web1" और "web1.test.example.com" क्रमशः) लौटाते हैं, और मुझे सही प्रविष्टियां मिली हैं /etc/hosts

क्या देता है?

ये Ubuntu 10.04 होस्ट हैं, अगर इससे कोई फर्क पड़ता है।

जवाबों:


18

hostname -fसिस्टम का fqdn प्राप्त करने के लिए एक स्पष्ट कॉल का उपयोग करने का प्रयास करें

export PS1="\[\u@$(hostname -f): \w\]\$ "

जैसे

iain$ export PS1="\[\u@$(hostname -f): \w\]\$ "
iain@ub10-04-1.lan: ~$ 

संपादित करें:

आगे के शोध से पता चलता है कि /etc/hostname(उबंटू) और /etc/sysconfig/network(सेंटोस) की सामग्री प्रासंगिक है। यदि FQDN फ़ाइल में है तो \Hसही ढंग से काम करता है।

Ubuntu के लिए hostname (1) मैन पेज हालांकि यह कहता है कि आपको FQDN को / etc / hostname में नहीं डालना चाहिए लेकिन ऐसा क्यों करने का कोई कारण नहीं है।


यह थोथा बदसूरत है :( लेकिन यह काम करता है। मैं इसे थोड़ी देर के लिए खुला छोड़ सकता हूं, "क्लीन" फिक्स करना वास्तव में अच्छा होगा।
बेन विलियम्स

यह डेबियन / ubuntu से संबंधित प्रतीत होता है। यह सेंटो में अपेक्षित रूप से काम करता है।
user9517

1
हाँ, यह निश्चित रूप से एक उबंटू समस्या है। मैंने आपके सुझाए गए समाधान का उपयोग करके समाप्त कर दिया है; मुझे वास्तव में इसे उबंटू में बैश के खिलाफ बग के रूप में रिपोर्ट करना चाहिए।
बेन विलियम्स

@BenWilliams: अद्यतन उत्तर के साथ क्या यह कम fugly बनाना चाहिए।
user9517

मैंने उबंटू के होस्टनाम-सेटिंग डॉक्स में भी वही अस्पष्टता पाई है। निश्चित नहीं है कि इसे कैसे हल किया जाए।
डॉगवॉटर

4

होस्टनाम, लघु और लंबे के बारे में पागलपन की एक पागल राशि है, और इसे हर समय ठीक करना कठिन है - इसलिए मैं बस छोड़ देता हूं और होस्टनाम के रूप में FQDN का उपयोग करने के लिए सब कुछ करता हूं ...

मैं अपने वातावरण में आपके समान काम करता हूं, लेकिन मैं प्रॉम्प्ट में FQDNs को काट देता हूं क्योंकि मैं पता है कि मैं किस साइट पर हूं, और यह अंतरिक्ष बचाता है। मैं पर्यावरण के आधार पर अपने प्रॉम्प्ट को रंगीन-कोड भी करता हूं, इसलिए मुझे बेहतर चेतावनी मिली है जब मैं कुछ "महत्वपूर्ण" कर रहा हूं। मैं बाकी सभी चीज़ों से रास्ता भी अलग करता हूं, जिससे कॉपी-पास्ता को आसान बनाया जा सके। मेरे स्टॉक से एक स्निपेट /etc/profile:

if hostname -f | grep -q '\.stg\.example\.com'; then
  _ROOT_COLOR=33  # yellow
  _USER_COLOR=36  # cyan
else
  _ROOT_COLOR=31  # red
  _USER_COLOR=32  # green
fi

if [ "`id -u`" -eq 0 ]; then
  PS1="\[\033[01;${_ROOT_COLOR}m\]$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w #\[\033[00m\] "
else
  PS1="\[\033[01;${_USER_COLOR}m\]\u@$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w $\[\033[00m\] "
fi

और, जहां तक ​​"कुरूपता" चला जाता है, कौन परवाह करता है कि शीघ्र दिखाने के लिए कोड कैसा दिखता है? यह वैसे भी ज्यादातर समय केवल लिखने का कोड है।


1
रंग उपयोग के लिए +1।
साद मसूद

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