Bashプロンプト設定指南書

全般

記事作成から1年以上経過しています。
内容が古い可能性があります。

はじめに

先日、イベント参加者の方より質問をいただき、自分もあまり手をつけたことをない領域でしたので備忘がてら、bashプロンプトの設定について残しておきたいと思います!
質問してもらったことは、私の環境できず…役立たずですみません。

最近Catalinaにアップデートして、標準がzshになっていたようで自分の環境で質問内容試そうとしたら、bashじゃねーじゃん!となったのはここだけのお話です…w
CentOSなどはBashですし、、、残しおきます!
※ サーバーとかの共有bashは変更したら迷惑かかるのでやらないように!
 あくまでも個人環境でやってみてね。

確認環境

  • MacOS(Catalina)

そもそもbashのカスタマイズ

エモい黒画面使ってたらカッコよくね?レベル…
例までに標準とカスタムしたものです。
■標準

■Bashカスタム

はい。
普通にエモいっすね。
これはみんな使いたがるレベル。経理のお姉さんがこんな画面で仕事してたら1撃で惚れます。

bash設定ファイル

ユーザーごとに設定する必要があります。
Macだとデフォルトでは見えないようになっているので、Finderの場合は⌘ + ⇧ + . (ピリオド)で表示します。
bashだと ls -aとかかな。

パス用途、実行タイミングなど
~/.bash_profilebashがログインシェルとして起動されたときにのみ実行される。
オレオレエイリアスの宣言とか、プロンプトのカスタマイズはここで行ってます。
~/.bashrcインタラクティブ(対話的)シェルの初めに読まれる。
シェル変数や環境変数、エイリアスなどユーザー環境の基本となる設定を記述するのが一般的らしい

いまの設定値確認方法

Bashの場合PS1変数でプロンプトのフォーマットを指定しています。
とりあえず、以下のコマンドをぶったたく!

echo $PS1

ちなみに標準設定値は次のものとなっていました。

\h:\W \u\$

各設定値

PS1変数にどのような装飾をするか設定していきます。
設定する際の構造は次のような形になっています。

設定値意味
\aASCIIのベル文字(07)を表示する(ビープ音を鳴らす)
\d「曜 日 月 日」の形式(例:Fri Jan 5)で日付を表示する
\eASCIIのエスケープ文字(033)を表示する
\hホスト名のうち最初の「.」までの部分を表示する
\Hホスト名を表示する
\n改行する
\r復帰する
\sシェルの名前を表示する
\t現在の時刻を24時間の「HH:MM:SS」形式で表示する
\T現在の時刻を12時間の「HH:MM:SS」形式で表示する
\@現在の時刻を12時間の「am/pm」形式で表示する
\u現在のユーザー名を表示する
\vbashのバージョンを表示する
\Vbashのリリースを表示する
\w現在の作業ディレクトリをユーザーのホームディレクトリからの絶対パスで表示する
\W現在の作業ディレクトリを表示する
!このコマンドの履歴番号を表示する
#このコマンドのコマンド番号(現在のシェルのセッション中に実行されたコマンドのシーケンスにおける位置)を表示する
\$一般ユーザーの時:$
rootの時:#を表示
(実効UIDが0の場合に#となり、それ以外の場合に$となる)
\nnn8進数nnnに対応する文字を表示する
\バックスラッシュを表示する
[非表示文字のシーケンスを開始する。これを使って、プロンプト中に端末の制御シーケンスを埋め込むことができる
]非表示文字のシーケンスを終了する

装飾設定値

効果番号
bold1
下線4
反転7
文字色番号背景色番号bold体文字色番号
Black30Black40Dark Gray1;30
Blue34Blue44Light Blue1;34
Green32Green42Light Green1;32
Cyan36Cyan46Light Cyan1;36
Red31Red41Light Red1;31
Purple35Purple45Light Purple1;35
Brown33Brown43Yellow1;33
Light Gray37Light Gray47White1;37

設定方法

次のコマンドでbash設定ファイルを編集します。

vim ~/.bashrc

次は例ですが、PS1変数に設定する値を入力します。
(i キー押下で編集モードにします)
ここでは「太字緑でユーザー名 @ ホスト名 : 太字青でカレントフルパス ルートなら#それ以外なら$」と設定しています。

  • [\e[色指定m] で色指定開始
  • [\e[装飾;色指定m] で装飾と色指定開始
  • [\e[m] で色指定リセット
PS1='\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\w\[\e[m\]\$ '

(escキー押下後)以下のコマンドで保存します。

:wq

設定ファイルの更新はできたので、設定内容を以下のコマンドで反映します。

source ~/.bashrc

調べてみて

なんかいろいろ省略されすぎてて、理解まで時間がかかる…
1度設定したらあまり触るものでもないので、どこまで時間かけて理解すべきものかなといった印象です…
Gitのデフォルトブランチを表示することもできるようなので、それは気が向いた時でも記事にしてみようかな。
こういうのしっかり設定しておくとスッと後ろ通った人に印象付けできそうw
ちなみに設定ミスるとまともにbash動かなくなるようなので、変だなと思ったらPS1変数を消してやり直してみましょう_:(´ཀ`」 ∠):

コメント