Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置PS1,使git和conda都能在bash中显示?_Bash_Git_Anaconda_Ps1 - Fatal编程技术网

如何设置PS1,使git和conda都能在bash中显示?

如何设置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符号参考头

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符号参考头——短
}
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}) "
您可以在description
conda config--description env_提示符
中阅读有关模板化变量的更多信息

与您定义的行为不同的唯一方式是,当没有环境处于活动状态时,您将无法获得额外的换行符,但希望您可以接受。另一个缺点是Conda只允许预结束


另外,当不在回购中时,您的
git_分支
函数将向
stderr
发出信号,因此您可能需要转移该信号,以避免其影响会话。例如

#显示git分支
吉特尤分行(){
git符号参考头——短2>/dev/null
}

不相关,抱歉,但是将PS1设置为
$
之外的任何设置都有什么好处?@oguzismail许多人使用提示来显示他们认为相关的上下文,例如他们所在的主机(许多人登录到许多地方,需要在说出
rm-rf/*
)之前快速找到他们所在的位置)或者它们在中间,以及一天中的时间等等。@ MANV当然,谢谢你的反馈;重新打开。在我的<代码>中没有“Conda管理部分”。BASHC