我使用官方 Git Bash 提示符支持来显示当前分支作为提示符的一部分。
我的问题是,使用激活 Python 虚拟环境 ( python -m venv <dir>
)source bin/activate
不会显示虚拟环境名称 - (atlassian-watchdog)
- 作为 Bash 提示符的一部分:
nlykkei:~/projects/atlassian-watchdog (master *)$
我有一种强烈的感觉,它失败了,因为我使用PROMPT_COMMAND
in~/.bashrc
而不是PS1
,但GIT_PS1_SHOWCOLORHINTS
只能与 一起使用PROMPT_COMMAND
。
有没有什么方法可以与 Python 虚拟环境一起使用PROMPT_COMMAND
,以便在激活时将环境名称添加到提示中?
~/.git-prompt.sh:
# If you would like a colored hint about the current dirty state, set
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb" and are available only when
# using __git_ps1 for PROMPT_COMMAND or precmd.
垃圾箱/激活:
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
if [ "x(atlassian-watchdog) " != x ] ; then
PS1="(atlassian-watchdog) ${PS1:-}"
else
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
fi
export PS1
fi
~/.bashrc:
# git prompt
source ~/.git-prompt.sh
GIT_PS1_SHOWCOLORHINTS=1
PROMPT_COMMAND='__git_ps1 "\u:\w" "\\\$ "'
答案1
解决方案是将 的相关部分bin/activate
与结合起来~/git-prompt.sh
。
这是一个包装并修改第一个参数以包含虚拟环境的__git_ps1_venv()
函数。__git_ps1()
__git_ps1()
该PS1
变量应设置为提示的格式。
~/.bashrc
:
##################
# Prompt
##################
__git_ps1_venv() {
local pre="$1"
local post="$2"
if [ -n "${VIRTUAL_ENV}" ] && [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ]; then
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
# special case for Aspen magic directories
# see http://www.zetadev.com/software/aspen/
pre="[`basename \`dirname \"$VIRTUAL_ENV\"\``] ${pre}"
else
pre="(`basename \"$VIRTUAL_ENV\"`) ${pre}"
fi
fi
__git_ps1 "${pre}" "${post}"
}
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
if [[ -r ~/.git-prompt.sh ]]; then
. ~/.git-prompt.sh
GIT_PS1_SHOWCOLORHINTS=1
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="verbose name"
PROMPT_COMMAND='__git_ps1_venv "'"${PS1%\\\$ }"'" "\\\$ "'
fi