ユーザーに応じてプロンプトのカラースキームをどのように変更できますか?

ユーザーに応じてプロンプトのカラースキームをどのように変更できますか?

私の現在のプロンプトは、次のように色付けされ編集されます。

#!/bin/bash

# GIT Prompt help
if tput setaf 1 &> /dev/null; then
    tput sgr0; # reset colors
    bold=$(tput bold);
    reset=$(tput sgr0);
    txtund=$(tput sgr 0 1);
    black=$(tput setaf 0);
    blue=$(tput setaf 33);
    cyan=$(tput setaf 37);
    green=$(tput setaf 64);
    orange=$(tput setaf 166);
    purple=$(tput setaf 125);
    red=$(tput setaf 124);
    violet=$(tput setaf 61);
    white=$(tput setaf 15);
    yellow=$(tput setaf 136);
else
    bold='';
    reset="\e[0m";
    black="\e[1;30m";
    blue="\e[1;34m";
    cyan="\e[1;36m";
    green="\e[1;32m";
    orange="\e[1;33m";
    purple="\e[1;35m";
    red="\e[1;31m";
    violet="\e[1;35m";
    white="\e[1;37m";
    yellow="\e[1;33m";
fi;
ORIG=$PS1
HOST=$HOSTNAME
PS1="\[${txtund}${green}\]${HOST}\[\[${reset}\]";
PS1+="\$(prompt_git \"\[${white}\] on \[${violet}\]\")";
PS1+="\[${reset}\]";
PS1+="\[ at - ${orange}\W\]";
PS1+="\[${reset}\]";
PS1+="\[ - \u \]";
PS1+="\n\$ ";

PS1+="[ - \u ]" 行に現在のユーザーが表示されることを知っています。ところで根であればその部分が赤であってほしいです。他のすべてのユーザーのデフォルトの色は灰色でなければなりません。現在のユーザーに応じてそのセクションの色を変更する方法はありますか?または、変数を宣言し、IFステートメントを使用してそのセクションまたは変更されたセクションを赤で挿入する必要がありますか?

私の予想される出力は、すべての一般ユーザーに対して灰色で名前が付けられたユーザーです。根は赤でなければなりません。 BASHです。

答え1

ユーザーがrootであることを確認し、PS1を設定する方法はいくつかあります。

  • Username、use $USER$(whoami)(.NBの出力$(whoami)。スーパーユーザーは別の名前で呼び出すこともできますが、通常は.NBと呼ばれます)root
  • ユーザーのID、$EUIDまたは使用$UID(参照ここ情報を得るため)。ユーザーID0は常にスーパーユーザーです。

たとえば、この行を次のように置き換えることができますPS1+="\[ - \u \]"

if [ $EUID -eq 0 ]; then
    PS1+="\[ - ${red}\u \]";
else
    PS1+="\[ - \u \]";
fi

この行で別のカスタム変数を設定することもできます。

PS1+="\[ - \u  ${usercolor}\]"

そして条件文を使う前に色を次のように変更します。

if [ $EUID -eq 0 ]; then
    usercolor="\e[1;31m";
fi

関連情報