我当前的提示已按如下方式进行着色和编辑 -
#!/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):
- 用户名,使用
$USER
,$(whoami)
(.NB 的输出$(whoami)
。超级用户可以称为其他名称,但通常称为root
. - 用户的 ID,使用
$EUID
或$UID
(参见这里以获得一些信息)。用户识别码0 始终是超级用户。
例如,您可以将该行替换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