よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

【Linux設定】ターミナルのプロンプト「`$`」の長い表示を短く、ついでに色も変える

Linuxのプロンプト「$」の長い表示を短く、ついでに色も変える方法

ターミナルで入力待ちの表示の事を「プロンプト」と言うそうです。動作を促すという意味で、Windowsのターミナルでは「>」や「PS >」、Linuxの場合は「$」、Pythonシェル(インタラクティブ(対話)モード)では「>>>」と表示されるアレのことです。

Linuxのプロンプトのデフォルト設定では、記号$の横には「ユーザー名」「カレントディレクトリのパス」が表示されているかと思いますが、深い階層のディレクトリに移動すると表示が長くなって非常に見にくい。

※ Termuxのプロンプトは「ユーザー名」も「ディレクトリ」も表示されないで、常に「$」。

f:id:chayarokurokuro:20210624234112j:plain


素っ気ない。



今回は、長いプロンプト表示を短くし、ついでに色も変える方法を試し、メモします。



【実行環境】



※ この記事は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を書き換えてみます。

.bashrcvimなどのエディタで開いて、下記を最終行に追加する。

##### プロンプトの表示設定 #####
export PS1=" \u \t @\W [emoji:B9C] "
# 元に戻す
#export PS1="\$ "

ファイルを書き換えたら次のコマンドでファイルを読み込んで設定変更を有効にする。

$ source .bashrc

f:id:chayarokurokuro:20210624234352j:plain



変数PS1で、バックスラッシュの後ろに付けた表示用の特殊記号の意味ですが、

  • u ユーザー名
  • t 時刻
  • W (Wは大文字) 現在地のディレクトリ名
  • その他@[emoji:B9C]とスペース 文字列

を表しています。



あるいは、次のように書き換え、文字列の色と太さを変えてみる。

##### プロンプトの表示設定 #####
export PS1="[\[\e[1;36m\]茶屋六郎九郎\[\e[1;33m\]@\W\[\e[0m\]]\$ "                
# 元に戻す
#export PS1="\$ "

ファイルを書き換えたら、読み込んで設定変更を有効にします。

$ source ~/.bashrc

これでターミナルのプロンプト表示が変わったはずです。
↓こうなった

f:id:chayarokurokuro:20210624234705j:plain

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

f:id:chayarokurokuro:20210624234900j:plain

ディレクトリのパス表示を小文字のwにすると、ホームディレクトリからの相対パスが表示されますが、深い階層に行くにしたがって長くなる。見にくい。

元に戻したい時は、有効にしているexport文を#コメントアウトし、その下の$のみ表示(Termuxのデフォルト設定)のコメントアウトを外した上で、source .bashrcコマンドで再読み込みすればOK。



WSLのUbuntuでの変更

基本的に上のTermuxでやった方法と同じ。

ですが、.bashrcを見たらcolor_promptがどうだのとifの文条件分岐でPS1を書き換えるシェルスクリプトが既に書いてありました。

これがデフォルト設定なのか、自分で追加したのか覚えていない(;^_^A。

元々かいてある部分をコピーしてコメントアウトし、コピペを書き換えれば最悪元に戻せるだろ~[emoji:B97]
ということで、こちらでも出来ました。

参考リンク



【追記】
最終的に、

$ echo $PS1
[\[\e[1;36m\]茶屋\[\e[1;33m\]@\W\[\e[0m\]]$

という表示にした。
【追記おわり】



以上です。