HAM MEDIA MEMO

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 などのところはユーザーによって分けてください。

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