ウェブサイト検索

LinuxターミナルプロンプトでBashの色と内容をカスタマイズする方法


今日、Bashはほとんどすべての最新のLinuxディストリビューションでデフォルトのシェルです。しかし、ターミナルのテキストの色やプロンプトの内容がディストリビューションによって異なることに気づいているかもしれません。

おすすめの読書: Linuxで最も頻繁に使用されるオープンソースシェル5選

もし、これをより良いアクセシビリティのためや単なる気まぐれにカスタマイズする方法を知りたかったら、このまま読み続けてください。この文章では、その方法を説明します。

PS1のBash環境変数

コマンドプロンプトとターミナルの外観は、PS1と呼ばれる環境変数によって制御されます。Bashのマニュアルページによると、PS1はシェルがコマンドを読み取る準備ができたときに表示される主要なプロンプト文字列を表します。

PS1に許可されているコンテンツは、いくつかのバックスラッシュでエスケープされた特殊文字で構成されており、その意味はマニュアルページのPROMPTINGセクションに記載されています。

例として、私たちのシステムにおけるPS1の現在の内容を表示しましょう(これはあなたのケースでは少し異なるかもしれません):

$ echo $PS1

[\u@\h \W]$

私たちは今、自分たちのニーズに応じてPS1をカスタマイズする方法を説明します。

PS1フォーマットのカスタマイズ

マニュアルページのPROMPTINGセクションによると、各特殊文字の意味は次のとおりです。

  1. 現在のユーザーのユーザー名.
  2. \h: 完全修飾ドメイン名における最初のドット(.)までのホスト名。
  3. 現在の作業ディレクトリの ベース名。$HOME はチルダ (~) で省略されています。
  4. 現在のユーザーがルートであれば#、そうでなければ$を表示します。

例えば、現在のコマンドの履歴番号を表示したい場合は\!を追加することを検討したり、短いサーバー名の代わりにFQDNを表示したい場合は\Hを追加することを検討するかもしれません。

次の例では、このコマンドを実行することで、両方を現在の環境にインポートします:

PS1="[\u@\H \W \!]$"

エンターキーを押すと、プロンプトの内容が以下のように変化するのがわかります。上記のコマンドを実行する前後のプロンプトを比較してください。

では、次のステップに進み、コマンドプロンプトでユーザーとホスト名の色を変更しましょう – テキストとその周囲の背景の両方を。

実際、プロンプトの3つの側面をカスタマイズできます。

テキスト形式前景(テキスト)カラー背景色
0: 通常のテキスト30: ブラック40: ブラック
1: 太字31: 赤41: 赤
4: 下線付きのテキスト32: 緑42: 緑
33: 黄色43: 黄色
34: 青44: 青
35: 紫45: 紫
36: シアン46: シアン
37: ホワイト47: ホワイト

私たちは、何が続くのかが色のシーケンスであることを示すために、最初に\e特別文字を使用し、最後にmを置きます。

このシーケンスでは、3つの値(背景、フォーマット、および前景)がコンマで区切られています(値が指定されていない場合はデフォルトが適用されます)。

おすすめの読書: LinuxでBashシェルスクリプトを学ぶ

また、値の範囲が異なるため、最初に指定するもの(背景、形式、または前景)はどれでも構いません。

例えば、以下の PS1 は、プロンプトを黄色の下線付きテキストで赤の背景に表示させることになります:

PS1="\e[41;4;33m[\u@\h \W]$ "

見た目は良いですが、このカスタマイズは現在のユーザーセッションの間だけ有効です。端末を閉じたり、セッションを終了したりすると、変更は失われます。

これらの変更を恒久的にするには、使用しているディストリビューションに応じて、次の行を~/.bashrcまたは~/.bash_profileに追加する必要があります:

PS1="\e[41;4;33m[\u@\h \W]$ "

色を自由に試して、自分に最適なものを見つけてください。

要約

この記事では、Bashプロンプトの色と内容をカスタマイズする方法を説明しました。この投稿について質問や提案がある場合は、以下のコメントフォームを使ってお気軽にご連絡ください。お待ちしています!

関連記事: