zshでは、デフォルトでは、ユーザー表示またはルート表示を意味する変数(またはすべての変数)%#
に1つを追加できます。これに影響を与える方法があるかどうか疑問に思います。または、ユーザーかルートか(ルートは赤、ユーザーは青)に基づいて色を変更します。確実な方法は私のルートでを変更することです。しかし、これを考慮すると、すでに特別なシンボルです。両方に同じ記号を使用する方法がないかどうか疑問に思います。 zshに固有のものです(if thenステートメントのように、私ができる他のハッキングがあると確信しています)。PS1
PROMPT
%
#
%
#
PS1
~/.zshrc
PS1
%#
答え1
%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})
それしなければならない%m
ルートの場合は、ホスト名()を別の色(赤)に変更してみてください。テストするzshシェルはありませんが、正しく見えます。
理由は次のとおりです。
%(x.true.false)
::三重項の最初の項目の評価に基づいて正しいステートメントを実行してください。 '! 'シェルに権限がある場合は真です。実際には%#
ショートカットです%(!.#.%)
。
%{\e[1;31m%} %m %{\e[0m%}
::%{\e[X;Ym%}
はカラーエスケープシーケンスです。ここで、Xはフォーマット(太字、下線など)、Yはカラーコードです。色を変更したい用語の周りのシーケンスを開いて閉じる必要があります。それ以外の場合、そのポイント以降のすべてのアイテムはランダムな色になります。%m
明確にするために、プロンプト用語の周りにスペースを追加しました。
http://www.nparikh.org/unix/prompt.phpzshで利用可能なカラーマップやその他のオプションに関するより多くのオプションと詳細があります。
答え2
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "
%(#
シェルがrootとして実行されているかどうかをテストします。この設定を変更して、%(!
シェルが昇格された権限で実行されていることをテストします(そのような内容は含まれていますnewgrp
が、rootとしてログインしません)。