私のホームディレクトリの後にディレクトリを表示するbashプロンプトを作成します。

私のホームディレクトリの後にディレクトリを表示するbashプロンプトを作成します。

たとえば、私のホームディレクトリが「FirstLast」で、次の場所にある場合

/usr/FirstLast/Dir1/Dir2/Dir3

私のメッセージを読んでほしい

[username@srv1 Dir1]

私のディレクトリがどんなに深くても構いません。したがって、私がDir2にいてもDir3にいても、プロンプトには「Dir1」と表示されるはずです。

pwdを使用してフルパスを表示したくないので、現在のディレクトリも望ましくありません。

ベストアンサー1

文字列では、(小文字)の代わりに\W(大文字W)を使用します。例えば\wPS1

PS1='[\u@\h \W] '

からman bash

\w 現在の作業ディレクトリ、チルダに短縮された$ HOME(変数値を使用PROMPT_DIRTRIM

\W$HOMEチルダで省略された現在の作業ディレクトリのデフォルト名

で変数をbash設定することもできますPROMPT_DIRTRIM

PROMPT_DIRTRIM

\w0より大きい数値に設定されている場合、この値は拡張文字列と\W ヒント文字列をエスケープするときに保持する末尾のディレクトリコンポーネントの数として使用されます(以下のヒントを参照)。削除された文字は省略記号で置き換えられます。


プロンプトが常に現在のディレクトリよりも2つ以上のレベルのディレクトリ(または同様に複雑または珍しいディレクトリ)を表示するようにするには、次のようにします。コマンドの置き換えPS1文字列内。

PS1文字列は二重引用符ではなく一重引用符で囲む必要があります。それ以外の場合は、プロンプトが表示されるたびに再計算するのではなく、PS1が定義されたときにコマンドサブセットの戻り値を取得します。

例えば

PS1='[\u@\h $(basename $(realpath ../../))] '

おすすめ記事