自定义 Bash 提示符(又名 PS1 环境变量)的最佳实践是什么?

自定义 Bash 提示符(又名 PS1 环境变量)的最佳实践是什么?

我尝试通过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

来源:http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/setps.html

答案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 项目的提交者。

相关内容