Score:0

ไม่เห็นชื่อสภาพแวดล้อมเสมือนของไพ ธ อนในพรอมต์ทุบตีเมื่อใช้ PROMPT_COMMAND เพื่อแก้ไข PS1

ธง bt

ฉันย่อ bash prompt โดยต่อท้ายโค้ดบล็อกต่อไปนี้ ~/.bashrc ไฟล์.

get_PS1(){
    pwdmaxlen ท้องถิ่น = 30
    local trunc_ symbol="\[$(tput setaf 1)$(tput bold)\]..."
    
    ถ้า [[ "${#PWD}" -gt "$pwdmaxlen" ]]; แล้ว
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]"
        PS1="${trunc_ symbol}${right_chunk} \$ "
    อื่น
        PS1="\[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] "
    ไฟ
}

PROMPT_COMMAND=get_PS1

เมื่อมีการใช้งาน ฉันหมายถึงหลังจากนั้น ผู้บริหารทุบตีถ้าฉันสร้างสภาพแวดล้อมเสมือนจริงด้วย venv เสมือน แล้วเปิดใช้งานด้วย แหล่งที่มา venv/bin/เปิดใช้งาน, (เวน) ควรปรากฏขึ้นที่จุดเริ่มต้นของ bash prompt ไม่มีทางที่จะเข้าใจว่าฉันกำลังใช้งานสภาพแวดล้อมเสมือนจริง ซึ่งหลาม อันที่จริง แสดงว่าฉันอยู่ในสภาพแวดล้อมเสมือนจริง

จากที่ฉันเข้าใจสิ่งนี้จะเกิดขึ้นเมื่อฉันใช้เท่านั้น PROMPT_COMMAND ตัวแปร. ไม่สำคัญว่าฉันจะแก้ไขอะไรภายใน get_PS1 ฟังก์ชัน มันจะทำงานในลักษณะนี้เสมอ ฉันรู้ว่า PROMPT_DIRTRIM ทาง แต่นั่นไม่ใช่สิ่งที่ฉันกำลังมองหา

รุ่นทุบตีคือ 5.0.17(1)-release. ฉันใช้ Kubuntu 20.04.3 LTS

อย่างไรก็ตาม ฉันได้เรียนรู้บล็อกโค้ดนี้จาก ที่นี่.

ขอบคุณ. แจ้งให้เราทราบหากต้องการข้อมูลอื่นๆ

Score:0
ธง bt

สามารถทำได้ด้วยความช่วยเหลือของ VIRTUAL_ENV ตัวแปร. เมื่อสภาพแวดล้อมเสมือนจริงเช่น สิ่งแวดล้อม ถูกเปิดใช้งาน เส้นทางของมันถูกเก็บไว้ใน VIRTUAL_ENV และสามารถมองเห็นได้ด้วย สะท้อน $VIRTUAL_ENV.

ตอนนี้ จัดรูปแบบ กรอง และจัดเก็บชื่อสภาพแวดล้อมเสมือนด้วยสิ่งนี้:

local virt_env=`printf "($(echo $VIRTUAL_ENV | awk -F "/" '{print $NF}'))"`;

หลังจากนั้นให้ต่อท้าย virt_env แปรผันเป็น ป.ล.1 เมื่อจำเป็น หลังจากเพิ่มตรรกะใหม่แล้ว get_PS1 จะมีลักษณะดังนี้:

get_PS1(){
    pwdmaxlen ท้องถิ่น = 30
    local trunc_ symbol="\[$(tput setaf 1)$(tput bold)\]..."
    local virt_env=`printf "($(echo $VIRTUAL_ENV | awk -F "/" '{print $NF}'))"`;

    ถ้า [[ "${#PWD}" -gt "$pwdmaxlen" ]]; แล้ว
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]";
        ถ้า [[ -n "$VIRTUAL_ENV" ]]; แล้ว
            PS1="${virt_env} ${trunc_ symbol}${right_chunk} \$ ";
        อื่น
            PS1="${trunc_ symbol}${right_chunk} \$ ";
        ไฟ
    อื่น
        ถ้า [[ -n "$VIRTUAL_ENV" ]]; แล้ว
            PS1="${virt_env} \[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] ";
        อื่น
            PS1="\[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] ";
        ไฟ
    ไฟ
}

บันทึก: เดอะ ถ้าอย่างอื่น บล็อกโค้ดอาจปรับปรุงได้ แต่ทำงานได้ดีสำหรับฉัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา