พฤติกรรมแปลก ๆ ใน Terminal ด้วย. bash_profile ที่กำหนดเอง


8

เป็นการยากที่จะอธิบายพฤติกรรม แต่นี่เป็นคลิปสั้น ๆ :

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

โดยทั่วไปเมื่อป้อนคำสั่งหลายบรรทัดที่ส่วนท้ายของบรรทัดแรกบล็อกการแทรกจะกลับไปที่จุดเริ่มต้นของบรรทัดแรกเขียนทับบรรทัดแรกจากนั้นดำเนินการต่อเช่นเดียวกับบรรทัดที่สองสามและอื่น ๆ ปกติ . เมื่อลบมันอนุญาตให้ฉันลบคำสั่งทั้งหมดรวมทั้งช่องว่างที่ว่างบนบรรทัดด้านบนคำสั่ง (ฉันมีมันตั้งค่าเพื่อให้คำสั่งแทรกหลังจากบรรทัดที่มี user @ host / Directory data จากนั้นแม้จะอนุญาตให้ฉันลบ ส่วนสุดท้ายของไดเรกทอรีและโฮสต์ที่ฉันอธิบายไว้ข้างต้นขออภัยฉันอธิบายเรื่องนี้ได้แย่มากวิดีโอจะทำงานได้ดีขึ้น

นี่คือเนื้อหาของ. bash_profile ของฉัน:

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

คำตอบ:


12

คุณควรจะล้อมรอบตัวอักษรของคุณไม่ใช่การพิมพ์ (ในกรณีนี้, ANSI ลำดับหนีของคุณ) วนเวียนอยู่กับการหลบหนีทุบตี: และ\[ \]วิธีการทุบตีจะรู้ว่าตัวละครที่ล้อมรอบจะมองไม่เห็นคือ พวกเขาไม่ใช้พื้นที่เช่น ไม่ควรรวมไว้ในการคำนวณความยาวคำที่ใช้โดยเครื่องห่อบรรทัด

กล่าวอีกนัยหนึ่งเปลี่ยน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-escapes ในแถวล่าง, bash escapes อยู่ตรงกลางและอักขระการพิมพ์ในแถวบน)

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

อ่านเพิ่มเติม:


นี่คือที่สมบูรณ์แบบแก้ปัญหาของฉัน ขอบคุณมากสำหรับความช่วยเหลือ!
แบลร์เบ็

แบลร์ยินดีต้อนรับสู่ถามที่แตกต่างกัน! หากคุณต้องการคำตอบสำหรับคำถามของคุณโปรดโหวตขึ้นและยอมรับมัน
nohillside

0

ฉันทุกคน

ฉันมีปัญหาที่คล้ายกันและฉันพบวิธีแก้ปัญหาโดยเพียงแค่เปลี่ยนตัวแปร PS1 ของฉันจากแบบดั้งเดิมเป็นแบบง่าย ๆ เพียงแค่ชื่อจริงของฉัน: export PS1 = Alex

ตอนนี้สถานีของฉันไม่มีพฤติกรรมแปลก ๆ อีกต่อไป

หวังว่ามันจะช่วย

อเล็กซ์ (บน Mac Lion 10.8)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.