Điểm:0

Không thể thấy tên môi trường ảo python trong dấu nhắc bash khi PROMPT_COMMAND đang được sử dụng để sửa đổi PS1

lá cờ bt

Tôi đã rút ngắn dấu nhắc bash của mình bằng cách nối thêm khối mã sau vào ~/.bashrc tập tin.

get_PS1(){
    cục bộ pwdmaxlen=30
    local trunc_symbol="\[$(tput setaf 1)$(tput bold)\]..."
    
    nếu [[ "${#PWD}" -gt "$pwdmaxlen" ]]; sau đó
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]"
        PS1="${trunc_symbol}${right_chunk} \$ "
    khác
        PS1="\[$(tput setaf 4)$(tput in đậm)\]\$(pwd) \$\[$(tput sgr0)\] "
    fi
}

PROMPT_COMMAND=get_PS1

Khi nó đang hoạt động, ý tôi là sau điều hành bash, nếu tôi tạo một môi trường ảo với virtualenv venv và sau đó kích hoạt nó với nguồn venv/bin/kích hoạt, (venv) nên xuất hiện ở đầu dấu nhắc bash. Không có cách nào để hiểu rằng tôi đang chạy một môi trường ảo, mặc dù con trăn nào trên thực tế, cho thấy rằng tôi đang ở trong một môi trường ảo.

Theo những gì tôi hiểu, điều này chỉ xảy ra khi tôi sử dụng PROMPT_COMMAND Biến đổi. Không quan trọng, loại sửa đổi nào tôi đã làm bên trong nhận_PS1 chức năng, Nó sẽ luôn hoạt động theo cách này. tôi biết PROMPT_DIRTRIM cách, nhưng đó không phải là những gì tôi đang tìm kiếm.

phiên bản Bash là 5.0.17(1)-phát hành. Tôi đang chạy Kubfox 20.04.3 LTS.

Nhân tiện, tôi đã học khối mã này từ đây.

Cảm ơn. Hãy cho tôi biết nếu có bất kỳ thông tin nào khác được yêu cầu.

Điểm:0
lá cờ bt

Nó có thể được thực hiện với sự hỗ trợ của VIRTUAL_ENV Biến đổi. Khi một môi trường ảo, vd. env được kích hoạt, đường dẫn của nó được lưu trữ trong VIRTUAL_ENV và có thể được nhìn thấy với tiếng vang $VIRTUAL_ENV.

Bây giờ định dạng, lọc và lưu trữ tên môi trường ảo bằng cách này:

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

Sau đó, nối thêm virt_env biến thành PS1 khi cần thiết. Sau khi thêm logic mới, nhận_PS1 sẽ trông như thế này:

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

    nếu [[ "${#PWD}" -gt "$pwdmaxlen" ]]; sau đó
        local right_chunk="\[$(tput setaf 4)$(tput bold)\]${PWD:$((${#PWD}-$pwdmaxlen)):${#PWD}}\[$(tput sgr0) \]";
        nếu [[ -n "$VIRTUAL_ENV" ]]; sau đó
            PS1="${virt_env} ${trunc_symbol}${right_chunk} \$ ";
        khác
            PS1="${trunc_symbol}${right_chunk} \$ ";
        fi
    khác
        nếu [[ -n "$VIRTUAL_ENV" ]]; sau đó
            PS1="${virt_env} \[$(tput setaf 4)$(tput bold)\]\$(pwd) \$\[$(tput sgr0)\] ";
        khác
            PS1="\[$(tput setaf 4)$(tput in đậm)\]\$(pwd) \$\[$(tput sgr0)\] ";
        fi
    fi
}

Ghi chú: các nếu khác các khối mã có thể được cải thiện, nhưng nó đã giúp ích cho tôi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.