自訂 Bash 提示字元(又稱 PS1 環境變數)的最佳實踐是什麼?

自訂 Bash 提示字元(又稱 PS1 環境變數)的最佳實踐是什麼?

我正在嘗試透過更改變數來將 Git 分支名稱新增至我的 Bash 提示字元中,PS1如下所示:

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 桌面,並且在或中工作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..should in.bashrc和not .profile

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

答案2

我同意 @sylvain-pineau 的觀點,它應該位於 .bashrc 中。

我使用的是我在 github 上分叉的 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 專案的提交者。

相關內容