zshのプロンプトカラーがユーザー毎に変わる設定を導入してみた

このエントリーをはてなブックマークに追加

VPSでもzshを利用していて、ログインユーザーやそのほかのユーザーで、zshの設定をそれぞれ持っているのも面倒なので、設定ファイルとして一つ用意して、それをシンボリックリンクで全ユーザー同じに使えるようにしています。

どのユーザーになっているのか、プロンプトにユーザー名を表示するようにしているのでわかると言えば分かるのですが、さらに明確に分けられるように、ユーザーごとに色が変えてみることにしました。

case 〜 in で分岐

zsh: 15. Parameters

これをみると、UID もしくは USERNAME あたりを使うことでできそう。

共通化している .zshrc に以下の設定を加えるだけで分岐ができました。

case ${USERNAME} in
'root')
   PROMPT="%{$fg[magenta]%}%n%(!.#.$)%{$reset_color%} "
   PROMPT2="%{$fg[green]%}%_> %{$reset_color%}"
   SPROMPT="%{$fg[red]%}correct: %R -> %r [nyae]? %{$reset_color%}"
   RPROMPT="%{$fg[cyan]%}[%~]%{${reset_color}%}"
    ;;
'xxx')
   PROMPT="%{$fg[yellow]%}%n%(!.#.$)%{$reset_color%} "
   PROMPT2="%{$fg[green]%}%_> %{$reset_color%}"
   SPROMPT="%{$fg[red]%}correct: %R -> %r [nyae]? %{$reset_color%}"
   RPROMPT="%{$fg[cyan]%}[%~]%{${reset_color}%}"
    ;;
'xxxxxx')
   PROMPT="%{$fg[black]$bg[yellow]%}%n%(!.#.$)%{$reset_color%} "
   PROMPT2="%{$fg[green]%}%_> %{$reset_color%}"
   SPROMPT="%{$fg[red]%}correct: %R -> %r [nyae]? %{$reset_color%}"
   RPROMPT="%{$fg[cyan]%}[%~]%{${reset_color}%}"
    ;;
*)
   PROMPT="%{$fg[green]%}%n%(!.#.$)%{$reset_color%} "
   PROMPT2="%{$fg[green]%}%_> %{$reset_color%}"
   SPROMPT="%{$fg[red]%}correct: %R -> %r [nyae]? %{$reset_color%}"
   RPROMPT="%{$fg[cyan]%}[%~]%{${reset_color}%}"
    ;;
esac

rootなら magenta 、 xxxユーザーなら yellow 、 xxxxxxユーザーなら 文字色 black の 背景 yellow 、 それ以外の全ユーザーは 'green' という設定になっています。 xxx などのところはユーザーによって分けてください。

これで設定ファイルが同一でも、ユーザー毎でプロンプトの色を変更しておくことができるようになりました。