Bashプロンプトのカスタマイズ


コマンドラインのデフォルトのプロンプトだと [hoge@localhost ~]$ と大体ユーザー名、ホスト名、ディレクトリ名を表示してくれます。
これはこれでいいのですが、Gitステータス情報や時刻も表示できるとより快適です。
ただ、情報が多く横に長くなってしまいコマンドを入力するたびに折り返しが入って見辛いです。

試行錯誤の結果、2行プロンプトにするのが一番利便性が高かったので設定方法をまとめます。

環境

  • Mac
  • 標準ターミナルアプリ
  • Bash

完成形

完成形はこの2行プロンプトです。

ディレクトリ名 Gitブランチ名 ユーザー名@PC名 [時:分:秒]
$ 

準備

bash-completion のインストール

Gitのステータス情報を表示するには、 bash-completion をインストールする必要があります。

$ brew install bash-completion

設定

~/.bash_profile
# bash-completion 読み込み
if [ -f $(brew --prefix)/etc/bash_completion.d/git-prompt.sh ]; then
  . $(brew --prefix)/etc/bash_completion.d/git-prompt.sh
fi

if [ -f $(brew --prefix)/etc/bash_completion.d/git-completion.bash ]; then
  . $(brew --prefix)/etc/bash_completion.d/git-completion.bash
fi

# プロンプトカラー設定
_CYAN="\[$(tput setaf 6)\]"
_GREEN="\[$(tput setaf 2)\]"
_YELLOW="\[$(tput setaf 3)\]"
_RESET="\[$(tput sgr0)\]"

# プロンプトに各種情報を表示
GIT_PS1_SHOWUPSTREAM=1
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWSTASHSTATE=1

export PS1="${_CYAN}\w${_GREEN}\$(__git_ps1 ' %s')${_RESET} ${_YELLOW}\u@\h${_RESET} [\t]\n\$ "
unset _CYAN _GREEN _YELLOW _RESET

デフォルトの設定

export PS1="[\u@\h \W]\$ "

参考