如何设置PS1,使git和conda都能在bash中显示?
My.bashrc:如何设置PS1,使git和conda都能在bash中显示?,bash,git,anaconda,ps1,Bash,Git,Anaconda,Ps1,My.bashrc: #显示一条近路 shortwd(){ num_dirs=3 pwd_symbol=“…” newPWD=“${PWD/#$HOME/~}” 如果[$(echo-n$newPWD | awk-F'/''{print NF}')-gt$num_dirs];那么 newPWD=$(echo-n$newPWD | awk-F'/'{print$1/../'$(NF-1)“/”$(NF)}') fi echo-n$newPWD } #显示git分支 吉特尤分行(){ git符号参考头
#显示一条近路
shortwd(){
num_dirs=3
pwd_symbol=“…”
newPWD=“${PWD/#$HOME/~}”
如果[$(echo-n$newPWD | awk-F'/''{print NF}')-gt$num_dirs];那么
newPWD=$(echo-n$newPWD | awk-F'/'{print$1/../'$(NF-1)“/”$(NF)}')
fi
echo-n$newPWD
}
#显示git分支
吉特尤分行(){
git符号参考头——短
}
export PS1='\n$CONDA\u PROMPT\u修饰符\e[38;5;211m$(shortwd)\e[38;5;48m[$(吉特分行)]\e[0m$'
现在,bash看起来像:
(基本)/…/MyCode/python[master]$
但在我运行conda activate env
切换我的conda env后,它会出现一个错误,即无论我运行什么命令,在命令输出的末尾都会显示当前的conda env名称。如下所示:
(基本)/…/MyCode/python[master]$ls代码研究keras mxnet我的工具其他pyqt5 pytorch qt测试窗口代码
(基数) 若我想使conda env名称不总是显示在每个命令输出的末尾,我应该怎么做?
我建议让Conda自己处理修改
PS1
的部分,并为其他部分使用您的定制bash函数。为此,我将PS1
更改为
export PS1='\e[38;5;211m$(shortwd)\e[38;5;48m [$(git_branch)]\e[0m$'
然后将其移动到.bashrc
的Conda managed部分之前。接下来,将Conda配置变量env_prompt
设置为所需:
conda config --set env_prompt "\n({default_env}) "
您可以在descriptionconda config--description env_提示符
中阅读有关模板化变量的更多信息
与您定义的行为不同的唯一方式是,当没有环境处于活动状态时,您将无法获得额外的换行符,但希望您可以接受。另一个缺点是Conda只允许预结束
另外,当不在回购中时,您的
git_分支
函数将向stderr
发出信号,因此您可能需要转移该信号,以避免其影响会话。例如
#显示git分支
吉特尤分行(){
git符号参考头——短2>/dev/null
}
不相关,抱歉,但是将PS1设置为$
之外的任何设置都有什么好处?@oguzismail许多人使用提示来显示他们认为相关的上下文,例如他们所在的主机(许多人登录到许多地方,需要在说出rm-rf/*
)之前快速找到他们所在的位置)或者它们在中间,以及一天中的时间等等。@ MANV当然,谢谢你的反馈;重新打开。在我的<代码>中没有“Conda管理部分”。BASHC