Puncte:0

Nu se poate vedea numele mediului virtual Python în promptul bash când PROMPT_COMMAND este folosit pentru a modifica PS1

drapel bt

Mi-am scurtat promptul bash adăugând următorul bloc de cod ~/.bashrc fişier.

get_PS1(){
    local pwdmaxlen=30
    local trunc_symbol="\[$(tput setaf 1)$(tput bold)\]..."
    
    dacă [[ "${#PWD}" -gt "$pwdmaxlen" ]]; atunci
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]"
        PS1="${trunc_symbol}${right_chunk} \$ "
    altfel
        PS1="\[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] "
    fi
}

PROMPT_COMMAND=get_PS1

Când este activ, vreau să spun după exec bash, dacă creez un mediu virtual cu virtualenv venv și ulterior activați-l cu sursă venv/bin/activate, (venv) ar fi trebuit să apară la începutul promptului bash. Nu există nicio modalitate de a înțelege că rulez un mediu virtual, totuși care piton de fapt, arată că mă aflu într-un mediu virtual.

Din câte am înțeles, asta se întâmplă doar când folosesc PROMPT_COMMAND variabil. Nu contează, ce tip de modificare am făcut în interior get_PS1 Funcție, se va comporta întotdeauna astfel. stiu PROMPT_DIRTRIM fel, dar nu asta caut.

Versiunea Bash este 5.0.17(1)-lansare. Rulez Kubuntu 20.04.3 LTS.

Apropo, am învățat acest bloc de cod de la Aici.

Mulțumiri. Anunțați-mă dacă sunt necesare alte informații.

Puncte:0
drapel bt

Se poate face cu ajutorul lui VIRTUAL_ENV variabil. Când un mediu virtual de ex. înv este activat, calea este stocată în VIRTUAL_ENV si poate fi vazut cu echo $VIRTUAL_ENV.

Acum formatați, filtrați și stocați numele mediului virtual cu asta:

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

După aceea, adăugați virt_env variabilă la PS1 când este necesar. După ce a adăugat o nouă logică get_PS1 va arata asa:

get_PS1(){
    local pwdmaxlen=30
    local trunc_symbol="\[$(tput setaf 1)$(tput bold)\]..."
    local virt_env=`printf "($(echo $VIRTUAL_ENV | awk -F "/" '{print $NF}'))"`;

    dacă [[ "${#PWD}" -gt "$pwdmaxlen" ]]; atunci
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]";
        dacă [[ -n „$VIRTUAL_ENV” ]]; atunci
            PS1="${virt_env} ${trunc_symbol}${right_chunk} \$ ";
        altfel
            PS1="${trunc_symbol}${right_chunk} \$ ";
        fi
    altfel
        dacă [[ -n „$VIRTUAL_ENV” ]]; atunci
            PS1="${virt_env} \[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] ";
        altfel
            PS1="\[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] ";
        fi
    fi
}

Notă: cel dacă-altfel blocurile de cod ar putea fi probabil îmbunătățite, dar a făcut treaba pentru mine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.