
たとえば、私のホームディレクトリが「FirstLast」で、次の場所にある場合
/usr/FirstLast/Dir1/Dir2/Dir3
私のメッセージを読んでほしい
[username@srv1 Dir1]
私のディレクトリがどんなに深くても構いません。したがって、私がDir2にいてもDir3にいても、プロンプトには「Dir1」と表示されるはずです。
pwdを使用してフルパスを表示したくないので、現在のディレクトリも望ましくありません。
答え1
文字列では、(小文字)の代わりに\W
(大文字W)を使用します。例えば\w
PS1
PS1='[\u@\h \W] '
からman bash
:
\w
現在の作業ディレクトリ、チルダに短縮された$ HOME(変数値を使用PROMPT_DIRTRIM
)
\W
$HOME
チルダで省略された現在の作業ディレクトリのデフォルト名
で変数をbash
設定することもできますPROMPT_DIRTRIM
。
PROMPT_DIRTRIM
\w
0より大きい数値に設定されている場合、この値は拡張文字列と\W
ヒント文字列をエスケープするときに保持する末尾のディレクトリコンポーネントの数として使用されます(以下のヒントを参照)。削除された文字は省略記号で置き換えられます。
プロンプトが常に現在のディレクトリよりも2つ以上のレベルのディレクトリ(または同様に複雑または珍しいディレクトリ)を表示するようにするには、次のようにします。コマンドの置き換えPS1文字列内。
PS1文字列は二重引用符ではなく一重引用符で囲む必要があります。それ以外の場合は、プロンプトが表示されるたびに再計算するのではなく、PS1が定義されたときにコマンドサブセットの戻り値を取得します。
例えば
PS1='[\u@\h $(basename $(realpath ../../))] '
答え2
これが発生した場合は、現在のzsh
パスの変数を設定してください。これがあなたが望むものです。%-2d
PROMPT
私のもの.zshrc
:
PROMPT="[username@srv1 %-2d]"