起因是因為在安裝完 Conda 後每次進入終端,都會自動進入名為“base”的 Python 虛擬環境,這本來沒什麼,而我用的 shell 工具是 oh-my-zsh,主題是 dst,這個主題代碼貌似有點問題,導致虛擬環境與後面的用户名@主機名等信息打印了兩行,類似如下效果:
(base)
mz@mac:~ [13:20:58]
$
看起來很彆扭,而我想要下面的這種效果:
mz@mac:(base) ~ [13:20:58]
$
另外,既然 Conda 都改了,那 Virtualenv 也順便做了,具體步驟如下:
首先,因為是自定義位置顯示環境信息,所以需要做一些配置,來關掉前綴顯示:
-
Conda 添加如下配置,位置在
~/.condarc,沒有該文件則需要新建:# 是否自動激活 base 環境(如果需要開啓可以跳過這條,或者改成 true) auto_activate_base: false # 是否更改 PS1(PS1前面是否加環境標識) changeps1: false -
Virtualenv 也需要關閉,方法是添加一條環境變量(添加完別忘了刷新
source xxx):export VIRTUAL_ENV_DISABLE_PROMPT=1
然後,是 dst 主題的配置,位置在~/.oh-my-zsh/themes/dst.zsh-theme, 其它主題也可以仿照這個配置來。
另:查詢 oh-my-zsh 當前主題:echo $ZSH_THEME
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[green]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}!"
ZSH_THEME_GIT_PROMPT_CLEAN=""
# 這裏是新增代碼
local env_prompt='$(env_prompt_info)'
env_prompt_info() {
# Conda info
if [ -n "$CONDA_DEFAULT_ENV" ]
then
echo -n "%{$fg[green]%}($CONDA_DEFAULT_ENV)%{$reset_color%} "
# Virtualenv info
elif [ -n "$VIRTUAL_ENV" ]
then
VIRTUAL_ENV_NAME=`basename $VIRTUAL_ENV`
echo -n "%{$fg[green]%}($VIRTUAL_ENV_NAME)%{$reset_color%} "
else
echo -n ""
fi
}
# 結束
function prompt_char {
if [ $UID -eq 0 ]; then
echo "%{$fg[red]%}#%{$reset_color%}";
else
echo $;
fi
}
# 注意這裏用英文半角的雙引號,而不是單引號
# 在合適的位置上加入`${env_prompt}`就可以了
PROMPT="\
%(?,,%{$fg[red]%}FAIL %{$reset_color%})\
%{$fg[magenta]%}\
%n%{$reset_color%}@%{$fg[yellow]%}%m%{$reset_color%}:${env_prompt}%{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info)
$(prompt_char) "
RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}'
最後,保存並退出,source ~/.zshrc,並開啓一個虛擬環境就可以看到效果了。