Im trying to customize the way the PS1 prompt shows in terminal and CLI on Arch Linux, but it's not printing the proper thing it should be doing.First up is I'm trying to colorize parts of the PS1 prompt like so with;################# color set #################RED=`echo -e \033[1;49;91m`           # bold redBLU=`echo -e \033[1;49;94m`           # bold bluePUR=`echo -e \033[1;49;95m`           # bold purpleORA=`echo -e \033[1;49;33m`           # bold orangeNC=`echo -e \033[0;0;0m`              # no colorsPS1=${ORA}[${RED}\u${BLU}: ${PUR}\W${ORA}]${RED}\$ ${NC}this works partially, but not in the way it SHOULD work. The problem part is the \$ for UID in the prompt. It doesn't show the correct UID for root and normal user and displays like so;[root@host: ~]$ instead of;[root@host: ~]#Not sure if it needs some special escape character or what, because apparently it thinks it should be a $ when it's suppose to be # for root and it's getting confused or if this is just a bug in bash? Reading the Arch Wiki didn't really give me much help on how to do this properly - https://wiki.archlinux.org/index.php/Color_Bash_Prompt#Prompt_escapesProblem 2:the terminal screen isn't reading the size layout properly and is overwriting itself on the same line like so;trying to set with shopt -s checkwinsize does not work, and does not set permanently for the terminal screen. For some reason checkwinsize is off by default in Arch, and I have no idea how to change it to on permanently. I'm using Enlightenment DE, so I'm not too sure if that will have something to do with this bug, and the usual Ctrl+L keys for resetting the terminal doesn't work like it it does in other Linux builds.
bash scripting and PS1 prompt
bash;quoting;prompt
ProblemPersonally, I hate that Wiki page, because some of the pieces are missing, namely what to do after you fix the colors, and distinguishing between the root and user prompt.  Note that the steps below apply a system wide prompt, ie every user will see colors.FixTaken from  3 ways to pimp your BASH console, which links to the same page you started with: (In my opinion, what's below is what's missing from the Arch Wiki Entry)First you need to edit your /etc/bash.bashrc file like so:# /etc/bash.bashrc## https://wiki.archlinux.org/index.php/Color_Bash_Prompt## This file is sourced by all *interactive* bash shells on startup,# including some apparently interactive shells such as scp and rcp# that can't tolerate any output. So make sure this doesn't display# anything or bad things will happen !# Test for an interactive shell. There is no need to set anything# past this point for scp and rcp, and it's important to refrain from# outputting anything in those cases.# If not running interactively, don't do anything![[ $- != *i* ]] && return# Bash won't get SIGWINCH if another process is in the foreground.# Enable checkwinsize so that bash will check the terminal size when# it regains control.# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)shopt -s checkwinsize# Enable history appending instead of overwriting.shopt -s histappendcase ${TERM} in    xterm*|rxvt*|Eterm|aterm|kterm|gnome*)        PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf \033]0;%s@%s:%s\007 ${USER} ${HOSTNAME%%.*} ${PWD/#$HOME/~}'        ;;    screen)        PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf \033_%s@%s:%s\033\\ ${USER} ${HOSTNAME%%.*} ${PWD/#$HOME/~}'        ;;esac# fortune is a simple program that displays a pseudorandom message# from a database of quotations at logon and/or logout.# If you wish to use it, please install fortune-mod from the# official repositories, then uncomment the following line:# [[ $PS1 ]] && /usr/bin/fortune# Set colorful PS1 only on colorful terminals.# dircolors --print-database uses its own built-in database# instead of using /etc/DIR_COLORS. Try to use the external file# first to take advantage of user additions. Use internal bash# globbing instead of external grep binary.# sanitize TERM:safe_term=${TERM//[^[:alnum:]]/?}match_lhs=[[ -f ~/.dir_colors ]] && match_lhs=${match_lhs}$(<~/.dir_colors)[[ -f /etc/DIR_COLORS ]] && match_lhs=${match_lhs}$(</etc/DIR_COLORS)[[ -z ${match_lhs} ]] \    && type -P dircolors >/dev/null \    && match_lhs=$(dircolors --print-database)if [[ $'\n'${match_lhs} == *$'\n'TERM ${safe_term}* ]] ; then    # we have colors :-)    # Enable colors for ls, etc. Prefer ~/.dir_colors    if type -P dircolors >/dev/null ; then        if [[ -f ~/.dir_colors ]] ; then            eval $(dircolors -b ~/.dir_colors)        elif [[ -f /etc/DIR_COLORS ]] ; then            eval $(dircolors -b /etc/DIR_COLORS)        fi    fi    PS1=$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$([[ \$? != 0 ]] && echo \\[\033[01;31m\]:(\[\033[01;34m\] \)\\$\[\033[00m\]     # Use this other PS1 string if you want \W for root and \w for all other users:    # PS1=$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h\[\033[01;34m\] \W'; else echo '\[\033[01;32m\]\u@\h\[\033[01;34m\] \w'; fi) \$([[ \$? != 0 ]] && echo \\[\033[01;31m\]:(\[\033[01;34m\] \)\\$\[\033[00m\]     alias ls=ls --color=auto    alias dir=dir --color=auto    alias grep=grep --color=auto    alias dmesg='dmesg --color'    # Uncomment the Color line in /etc/pacman.conf instead of uncommenting the following line...!    # alias pacman=pacman --color=autoelse    # show root@ when we do not have colors    PS1=\u@\h \w \$([[ \$? != 0 ]] && echo \:( \)\$     # Use this other PS1 string if you want \W for root and \w for all other users:    # PS1=\u@\h $(if [[ ${EUID} == 0 ]]; then echo '\W'; else echo '\w'; fi) \$([[ \$? != 0 ]] && echo \:( \)\$ fiPS2=> PS3=> PS4=+ # Try to keep environment pollution down, EPA loves us.unset safe_term match_lhs# Try to enable the auto-completion (type: pacman -S bash-completion to install it).[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion# Try to enable the Command not found hook (pacman -S pkgfile to install it).# See also: https://wiki.archlinux.org/index.php/Bash#The_.22command_not_found.22_hook[ -r /usr/share/doc/pkgfile/command-not-found.bash ] && . /usr/share/doc/pkgfile/command-not-found.bashand then add the corresponding /etc/DIR_COLORS:# Configuration file for the color ls utility# This file goes in the /etc directory, and must be world readable.# You can copy this file to .dir_colors in your $HOME directory to override# the system defaults.# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not# pipes. 'all' adds color characters to all output. 'none' shuts colorization# off.COLOR all# Extra command line options for ls go here.# Basically these ones are:#  -F = show '/' for dirs, '*' for executables, etc.#  -T 0 = don't trust tab spacing when formatting ls output.OPTIONS -F -T 0# Below, there should be one TERM entry for each termtype that is colorizableTERM linuxTERM consoleTERM con132x25TERM con132x30TERM con132x43TERM con132x60TERM con80x25TERM con80x28TERM con80x30TERM con80x43TERM con80x50TERM con80x60TERM xtermTERM xterm-colorTERM vt100TERM rxvtTERM rxvt-256colorTERM rxvt-cygwinTERM rxvt-cygwin-nativeTERM rxvt-unicodeTERM rxvt-unicode-256colorTERM rxvt-unicode256TERM screen# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)EIGHTBIT 1# Below are the color init strings for the basic file types. A color init# string consists of one or more of the following numeric codes:# Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed# Text color codes:# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white# Background color codes:# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=whiteNORMAL 00   # global default, although everything should be something.FILE 00     # normal fileDIR 01;34   # directoryLINK 01;36  # symbolic linkFIFO 40;33  # pipeSOCK 01;35  # socketBLK 40;33;01    # block device driverCHR 40;33;01    # character device driver# This is for files with execute permission:EXEC 01;32 # List any file extensions like '.gz' or '.tar' that you would like ls# to colorize below. Put the extension, a space, and the color init string.# (and any comments you want to add after a '#').cmd 01;32 # executables (bright green).exe 01;32.com 01;32.btm 01;32.bat 01;32.tar 01;31 # archives or compressed (bright red).tgz 01;31.arj 01;31.taz 01;31.lzh 01;31.zip 01;31.z   01;31.Z   01;31.gz  01;31.jpg 01;35 # image formats.gif 01;35.bmp 01;35.xbm 01;35.xpm 01;35.tif 01;35Use this as a working template to modify your scheme.  Of particular importance is: PS1=$(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$([[ \$? != 0 ]] && echo \\[\033[01;31m\]:(\[\033[01;34m\] \)\\$\[\033[00m\] In short this tidbit fixes your problem with root, as root's UID is always zero. 