我的.bashrc:
# show a short way
shortwd() {
num_dirs=3
pwd_symbol="..."
newPWD="${PWD/#$HOME/~}"
if [ $(echo -n $newPWD | awk -F '/' '{print NF}') -gt $num_dirs ]; then
newPWD=$(echo -n $newPWD | awk -F '/' '{print $1 "/.../" $(NF-1) "/" $(NF)}')
fi
echo -n $newPWD
}
# show git branch
git_branch() {
git symbolic-ref HEAD --short
}
export PS1='\n$CONDA_PROMPT_MODIFIER\e[38;5;211m$(shortwd)\e[38;5;48m [$(git_branch)]\e[0m$'
现在 bash 看起来像:
(基础)/.../MyCode/python [master]$
但我跑完之后conda activate env
切换我的 conda 环境。它有一个 BUG,无论我运行什么命令,总是在命令输出的末尾显示当前的 conda env 名称。如下所示:
(基础)/.../MyCode/python [master]$ls
code_study keras mxnet my_tools 其他 pyqt5 pytorch qt_diankeyuan 测试 windowsCode
(根据)
If I want to make the conda env name do not always show in end of the each command output,what should I do?
我建议让 Conda 处理自己的修改部分PS1
并将您的自定义 bash 函数用于其他部分。为此,我会改变PS1
to
export PS1='\e[38;5;211m$(shortwd)\e[38;5;48m [$(git_branch)]\e[0m$'
并将其移至before您的 Conda 管理的部分.bashrc
。接下来,设置 Conda 配置变量env_prompt
到你想要的:
conda config --set env_prompt "\n({default_env}) "
您可以在说明中阅读有关可模板变量的更多信息conda config --describe env_prompt
.
这偏离您定义的行为的唯一方法是,当没有任何环境处于活动状态时,您将不会获得额外的换行符,但希望您可以接受这一点。另一个缺点是 Conda 只允许前置。
顺便说一句,你的git_branch
函数将发射到stderr
当不在存储库中时,因此您可能想要转移它,这样它就不会影响您的会话。例如,
# show git branch
git_branch() {
git symbolic-ref HEAD --short 2> /dev/null
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)