起因是因为在安装完 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
,并开启一个虚拟环境就可以看到效果了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。