Linuxのプロンプト「$」の長い表示を短く、ついでに色も変える方法
ターミナルで入力待ちの表示の事を「プロンプト」と言うそうです。動作を促すという意味で、Windowsのターミナルでは「>」や「PS >」、Linuxの場合は「$」、Pythonシェル(インタラクティブ(対話)モード)では「>>>」と表示されるアレのことです。
Linuxのプロンプトのデフォルト設定では、記号$の横には「ユーザー名」「カレントディレクトリのパス」が表示されているかと思いますが、深い階層のディレクトリに移動すると表示が長くなって非常に見にくい。
※ Termuxのプロンプトは「ユーザー名」も「ディレクトリ」も表示されないで、常に「$」。
素っ気ない。
今回は、長いプロンプト表示を短くし、ついでに色も変える方法を試し、メモします。
【実行環境】
- Windows10
- WSL:Ubuntu
※ この記事はJupyter Notebookで書いています。
設定ファイル.bashrcとその存在確認
Linuxのホームディレクトリに.bashrcという隠し設定ファイルがあります。これにプロンプトの設定を書きます。
(ファイルやフォルダ名に.が付くと隠される)
まずはbashシェルを起動します。ターミナルを開いてbashと入力・実行します。
# パワーシェルなら PS なんとか> bash # Ubuntuターミナルなら user@なんとか:~$ bash # TermuxはTermuxアプリを立ち上げるだけ。
起動中のシェルの確認は、
$ echo $SHELL
bashシェルが起動中なら/bin/bashなどと表示される。
そしたら、とりあえずホームディレクトリを確認します。ホームはターミナルを起動した時の場所です。
- ホームディレクトリの確認
$ echo $HOME
AndroidスマホのTermux(のJupyter)で実行しますと、
!echo $HOME
/data/data/com.termux/files/home
↑はTermuxのデフォルト設定のホームディレクトリパス。
どこか違うディレクトリにいて、ホームに戻りたい場合は、
- ホームディレクトリに移動
$ cd
移動コマンドのcdの引数なしでホームに戻る。
隠し設定ファイル.bashrcは通常ホームディレクトリに置かれ、ターミナルでbashシェルを起動する時に読み込まれるファイルです。コマンド置換のaliasなどを書いておくファイルですが、そこにプロンプトの設定も書きます。
そのファイルがあるかどうか確認します。lsコマンドで存在しているファイルやフォルダが表示できますが、隠しファイルを含めて表示するには-aのオプションを付けます。
-
- カレントディレクトリ内で隠しファイルを含めて表示
$ ls -a
または、ホームディレクトリ以外の場所からホームディレクトリの内容をlsコマンドで表示するには、ホームを表す「~」または「~/」を引数に付けて
$ ls -a ~ #または $ ls -a ~/
表示されたファイルやフォルダの一覧に.bashrcがあればOK。
またはピンポイントでホームディレクトリに指定ファイル名があるかを確認するには、grepで的をしぼるのをパイプ|でつないで
$ ls -a ~/ | grep .bashrc
あれば.bashrcと出力され、なければ何も表示されません。
もし.bashrcがなければ作ります。
- 空の
.bashrcファイルを作成
$ touch ~/.bashrc
Termuxでのプロンプト表示の変更
プロンプトの環境変数PS1をいじる
ホームディレクトリを示す変数はHOMEでしたが、プロンプトの表示を設定する環境変数はPS1です。これを書き換えてexportするとプロンプトの表示が変わる。
ためしにTermuxで.bashrcを書き換えてみます。
.bashrcをvimなどのエディタで開いて、下記を最終行に追加する。
##### プロンプトの表示設定 ##### export PS1=" \u \t @\W [emoji:B9C] " # 元に戻す #export PS1="\$ "
ファイルを書き換えたら次のコマンドでファイルを読み込んで設定変更を有効にする。
$ source .bashrc
変数PS1で、バックスラッシュの後ろに付けた表示用の特殊記号の意味ですが、
uユーザー名t時刻W(Wは大文字) 現在地のディレクトリ名- その他
@と[emoji:B9C]とスペース 文字列
を表しています。
あるいは、次のように書き換え、文字列の色と太さを変えてみる。
##### プロンプトの表示設定 ##### export PS1="[\[\e[1;36m\]茶屋六郎九郎\[\e[1;33m\]@\W\[\e[0m\]]\$ " # 元に戻す #export PS1="\$ "
ファイルを書き換えたら、読み込んで設定変更を有効にします。
$ source ~/.bashrc
これでターミナルのプロンプト表示が変わったはずです。
↓こうなった
PS1="[\[\e[1;36m\]茶屋六郎九郎\[\e[1;33m\]@\W\[\e[0m\]]\$ "
の部分は、
- 最初の
[は、文字列、 - その次の
\[\e[1;36m\]は、茶屋六郎九郎という文字列を太文字にして色を36番に変え、 - その後ろの
\[\e[1;33m\]@\Wは、Wで現在のパスフォルダ名のみを、太文字の33番で表示し、 - その後ろの
\[\e[0m\]]\]は、最後の]の色を0番で元に戻し、 - 一番最後の
\\$は$をエスケープ
文字の色や書体の変更部分の説明については、この投稿の最後に貼った参考リンクを見てください。
表にまとめてあり、分かりやすいです。
または、このように書き換えてみる。
##### プロンプトの表示設定 ##### export PS1="[\[\e[1;36m\]🤑\[\e[1;33m\]@\w\[\e[0m\]]\$ " # 元に戻す #export PS1="\$ "
- 設定変更の読み込み
$ source ~/.bashrc
ディレクトリのパス表示を小文字のwにすると、ホームディレクトリからの相対パスが表示されますが、深い階層に行くにしたがって長くなる。見にくい。
元に戻したい時は、有効にしているexport文を#でコメントアウトし、その下の$のみ表示(Termuxのデフォルト設定)のコメントアウトを外した上で、source .bashrcコマンドで再読み込みすればOK。
WSLのUbuntuでの変更
基本的に上のTermuxでやった方法と同じ。
ですが、.bashrcを見たらcolor_promptがどうだのとifの文条件分岐でPS1を書き換えるシェルスクリプトが既に書いてありました。
これがデフォルト設定なのか、自分で追加したのか覚えていない(;^_^A。
元々かいてある部分をコピーしてコメントアウトし、コピペを書き換えれば最悪元に戻せるだろ~
ということで、こちらでも出来ました。
参考リンク
bashのプロンプトを変更するには
プロンプトに表示する特殊記号(tやwやWなど) を表にまとめてあります。ターミナルプロンプトの表示・色の変更 - Qiita
こちらでは、表示の特殊記号に加えて、文字の書体、色、背景色の変更も表にまとめてあります。
【追記】
最終的に、
$ echo $PS1 [\[\e[1;36m\]茶屋\[\e[1;33m\]@\W\[\e[0m\]]$
という表示にした。
【追記おわり】
以上です。