![自定义 Bash 提示符(又名 PS1 环境变量)的最佳实践是什么?](https://linux22.com/image/1125051/%E8%87%AA%E5%AE%9A%E4%B9%89%20Bash%20%E6%8F%90%E7%A4%BA%E7%AC%A6%EF%BC%88%E5%8F%88%E5%90%8D%20PS1%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%89%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我尝试通过PS1
如下方式更改变量将 Git 分支名称添加到我的 Bash 提示符中:
PS1=`echo "$PS1" | sed 's/\\\\\$ $/\$(__git_ps1)\\\\\$ /'`
如果我理解正确的话,不建议~/.bashrc
出于个性化目的进行更新。我发现的所有文章都建议出于此类目的进行更新.profile
。.bash_profile
所以我正在寻找一个完美的地方来放置这句话。
这些是我迄今为止尝试过的地方:
.profile
: 来源不明gnome-terminal
.bash_profile
: 来源不明gnome-terminal
.bash_login
: 来源不明gnome-terminal
.bash_aliases
:有效,但我认为PS1
与别名无关
gnome-terminal
我正在使用 Ubuntu Desktop,并且在或中工作byobu
,因此我必须找到bash
在 X 环境中启动时所获取的文件。然后,我.bashrc
在为 分配值后查找了它所获取的其他文件PS1
。有 和.bash_aliases
,/usr/share/bash-completion/bash_completion
但我认为它们不适合此目的。
还有什么其他选择?自定义 Bash 提示符的最佳实践是什么?
答案1
根据以下 HOWTO,你.bashrc
实际上是调整 $PS1 的最佳位置:
应在 中设置 PS1 字符串
.bashrc
。这是因为非交互式 bash 会特意取消设置 PS1。bash 手册页告诉我们,通过 PS1 的存在与否,可以很好地了解一个人是处于交互式 bash 会话中,还是处于非交互式(即脚本)bash 会话中。[...]
因此需要强调的是,
PS1=..blah..
应该在.bashrc
,而不是.profile
。
答案2
我同意@sylvain-pineau 的观点,它应该位于 .bashrc 中。
我使用的是我在 github 上 fork 的 git-prompt shell 脚本。它与 git、svn 和 hg 配合得很好。它会显示你所在的分支、哪些文件是新的、哪些文件发生了更改(以不同的颜色显示)以及上一个 bash 命令的状态。
你可以通过如下方式下载:
wget https://raw.githubusercontent.com/stalet/git-prompt/master/git-prompt.sh
chmod +x git-prompt.sh
然后在 .bashrc 中我使用测试来查看我的 git-prompt 脚本是否可用,然后获取它:
[[ -s ~/config/git-prompt.sh ]] && source ~/config/git-prompt.sh
免责声明,我是 git-prompt github 项目的提交者。