カテゴリー
Linux

Bash プロンプト PS1 の内容を理解し、設定する

はじめに

いま、私の Mac のターミナルでは、 Git のブランチ名が表示されるようになっており、便利です。さて、 Mac だけでなく、 Windows も使います。 Windows Subsystem for Linux で作業しはじめた時、 Git ブランチ名を表示するようにした後、違和感に気がつきました。

ブランチ名の左側に、ユーザ名等表示されるのですけれども、白くなってしまいました。しばらく放っておいたのですけれども、スクロールして戻った時、どれがコマンド実行行で、どれが出力なのか、わかり辛く感じました。

そこで、ブランチ名も表示しつつ、その左側も色付けするように設定いたしました。

基礎的な知識

ブランチ名の左側、などと表現しましたが、コマンドを打つ左側の表示のは、 "プロンプト" と呼べば良いようです。

参考ページです。 [export PS1] で最初検索しました。

WSL のプロンプト

本投稿のきっかけとなった、 Windows Subsystem for Linux のプロンプト設定です。

WSL Ubuntu 18.04 の PS1
oki2a24@DESKTOP-BLR2A3U:/mnt/c/Users/oki2a$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
oki2a24@DESKTOP-BLR2A3U:/mnt/c/Users/oki2a$

ユーザ名 @ サーバ名 : カレントフルパス ルートなら#それ以外なら$ という形で表示されています。

先ほどの参考ページを読み、読解のポイントをまとめます。

  • \e[ = \033[
  • \[\e[装飾;色指定m\] で色指定開始
  • \[\e[m\] = \[\033[00m\] で色指定リセット

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)} よりも後の部分を少し見やすくし、解説すると次のようになります。

\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ = \[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\w\[\e[m\]\$ = 太字緑でユーザー名 @ ホスト名 : 太字青でカレントフルパス ルートなら#それ以外なら$

これをベースに、カスタマイズしていきます。

カレントフルパスをカレントディレクトリに変更

  • \w: 現在のディレクトリ(フルパス)
  • \W: 現在のディレクトリ名

となりますので、現在のディレクトリ名に変更します。

Git のブランチ名を表示する。

おそらく、 MacのGitで補完を効かせたりブランチ名を表示する設定(Homebrewでgitをインストールした場合) – Qiita を使ったのが現在のページです。これに、色をつけて改善します。

といいましても、もはや難しくはなく、 $(__git_ps1 [%s]) でブランチ名が表示されますので、これを装飾するだけです。

おや? [%s] はフォーマット部分なので、こだわりがなければなくても良いようです。細かくカスタマイズしたい場合は次のページを参考にフォーマット部分をいじれば良さそうです。

次のようにしてみました。

$(__git_ps1 "(\[\e[1;31m\]%s\[\e[m\])")

完成形

export PS1='\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\W\[\e[m\]$(__git_ps1 "(\[\e[1;31m\]%s\[\e[m\])")\$'
完成した PS1 を Mac で表示

おわりに

今まで Git ブランチ名をなんとなく表示してきましたけれども、それは、プロンプトをカスタマイズすることによってなされ、そして Git ブランチ名部分をさらにカスタマイズできる可能性にも気がつくことができました。

git/git-prompt.sh at master · git/git を今一度確認して、もう少し改善の余地がないか、試してみようと思います。

以上です。

「Bash プロンプト PS1 の内容を理解し、設定する」への1件の返信

コメントを残す