कस्टम .bash_profile के साथ टर्मिनल में अजीब व्यवहार


8

व्यवहार का वर्णन करना कठिन है, लेकिन यहाँ एक छोटी क्लिप है:

http://www.youtube.com/watch?v=9KqHBA94FPI

मूल रूप से, मल्टी-लाइन कमांड दर्ज करते समय, पहली पंक्ति के अंत में, सम्मिलन ब्लॉक पहली पंक्ति के शुरू में वापस जाता है, पहली पंक्ति पर लिखता है, फिर दूसरी, तीसरी आदि की रेखाओं पर सामान्य की तरह जारी रहता है। । हटाते समय, यह मुझे पूरे कमांड को हटाने की अनुमति देता है, साथ ही कमांड के ऊपर लाइन पर रिक्त स्थान (मेरे पास यह सेटअप है ताकि उपयोगकर्ता @ होस्ट / डायरेक्ट्री जानकारी वाले लाइन के बाद कमांड मिल जाए। तब भी मुझे हटाने की अनुमति देता है। निर्देशिका और होस्ट का अंतिम भाग जिसका मैंने ऊपर वर्णन किया है। क्षमा करें, मैं यह समझाने में भयानक हूं कि वीडियो बेहतर काम करेगा।

यहाँ मेरी .bash_profile की सामग्री है:

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

जवाबों:


12

आपको अपने गैर-मुद्रण वर्णों (इस मामले में, आपके ANSI एस्केप अनुक्रम) को bash एस्केप दृश्यों के साथ घेरना चाहिए: \[और \]। इस तरह से बैश पता चल जाएगा कि संलग्न अक्षर दिखाई नहीं दे रहे हैं, अर्थात। वे स्थान नहीं लेते हैं, अर्थात। उन्हें लाइन-रैपर द्वारा प्रयुक्त शब्द-लंबाई गणना में शामिल नहीं किया जाना चाहिए।

दूसरे शब्दों में अपनी PS1परिभाषा बदलें :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

… सेवा:

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

और यहाँ एक ही PS1मूल्य है, केवल मानव-पढ़ने के लिए, शायद बेहतर पठनीयता के साथ (ANSI- निचली पंक्ति में बच जाता है, बीच में बच निकलता है और ऊपरी पंक्ति में वर्ण मुद्रित होता है।)

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

आगे की पढाई:


यह एकदम सही है, मेरी समस्या हल कर दी। सहायता के लिए बहुत - बहुत धन्यवाद!
ब्लेयर बेकविथ

ब्लेयर, अलग पूछने के लिए आपका स्वागत है! यदि आपको अपने प्रश्न का उत्तर पसंद है तो कृपया इसे लाइक करें और स्वीकार करें।
nohillside

0

मैं सबको,

मुझे भी इसी तरह की समस्याएँ थीं और मैंने अपने PS1 चर को मूल एक से एक बहुत ही सरल में बदलकर एक समाधान पाया, बस मेरा नाम वास्तव में: निर्यात PS1 = एलेक्स

अब मेरे टर्मिनल में कोई अजीब व्यवहार नहीं है।

आशा है कि यह मदद करने वाला है।

एलेक्स (मैक लायन पर 10.8)

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