5 ms·
To get a red prompt drop this line in your ~/.bashrc file on your production server: PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] ' We use this in our production en
by KrisJordan 16y ago
To get a red prompt drop this line in your ~/.bashrc file on your production server:
PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '
We use this in our production environments and the red prompt, though not as jarring as a red background, is still scary enough to serve its purpose.
One upside in setting this up on the server, as opposed to local like the OP, is that all connections in will get the red prompt.
- noonespecial 16y agoI do exactly this as well as add a little blurb in motd saysing that this machine is production, tread carefully. This seems to solve a great deal of mistaken identity problems.
- jonhohle 16y agoI do that in bash for root/non-root users (root is red, non-root is blue): if [[ ${EUID} == 0 ]] ; then PS1='\[\033[01m\][ \[\033[01;31m\]\u@\h \[\033[00m\]\[\033[01m\]] \[\033[01;32m\]\w\[\033[00m\]\n\[\033[01;31m\]\$\[\033[00m\]> ' else PS1='\[\033[01m\][ \[\033[01;34m\]\u@\h \[\033[00m\]\[\033[01m\]] \[\033[01;32m\]\w\[\033[00m\]\n\[\033[01;34m\]\$\[\033[00m\]> ' fi Interesting to think about using it across servers, though.
- s-phi-nl 16y agoKonsole does this automatically, at least on openSuSE linux.
- pmjordan 16y agoIt's actually just the default bash config on openSUSE, nothing to do with Konsole. It works on text-mode VTs, via ssh, etc.
- mgedmin 16y agoI used to have a different prompt color when SSH_CONNECTION was in my environment, to distinguish local terminals from remote connections. And also root/non-root, although I didn't know about $EUID and used the less-effective $(id -u).
- xtacy 16y agoTo avoid cryptic looking escape sequences, one could have the colour codes named in their .?shrc file [1]: txtblk='\e[0;30m' # Black - Regular txtred='\e[0;31m' # Red txtgrn='\e[0;32m' # Green txtylw='\e[0;33m' # Yellow txtblu='\e[0;34m' # Blue txtpur='\e[0;35m' # Purple txtcyn='\e[0;36m' # Cyan txtwht='\e[0;37m' # White bldblk='\e[1;30m' # Black - Bold bldred='\e[1;31m' # Red bldgrn='\e[1;32m' # Green bldylw='\e[1;33m' # Yellow bldblu='\e[1;34m' # Blue bldpur='\e[1;35m' # Purple bldcyn='\e[1;36m' # Cyan bldwht='\e[1;37m' # White unkblk='\e[4;30m' # Black - Underline undred='\e[4;31m' # Red undgrn='\e[4;32m' # Green undylw='\e[4;33m' # Yellow undblu='\e[4;34m' # Blue undpur='\e[4;35m' # Purple undcyn='\e[4;36m' # Cyan undwht='\e[4;37m' # White bakblk='\e[40m' # Black - Background bakred='\e[41m' # Red badgrn='\e[42m' # Green bakylw='\e[43m' # Yellow bakblu='\e[44m' # Blue bakpur='\e[45m' # Purple bakcyn='\e[46m' # Cyan bakwht='\e[47m' # White txtrst='\e[0m' # Text Reset [1] https://wiki.archlinux.org/index.php/Color_Bash_Prompt https://wiki.archlinux.org/index.php/Color_Bash_Prompt
- 1amzave 16y agoI have a similar section in my .bashrc via a somewhat hackish loop (or two): ESC=$'\x1b' # Terminal color escapes colornames=(BLACK RED GREEN YELLOW BLUE MAGENTA CYAN) for i in ${!colornames[@]}; do eval "${colornames[$i]}=\"${ESC}[3${i}m\"" eval "BG${colornames[$i]}=\"${ESC}[4${i}m\"" done # There are holes in this sequence, so it doesn't loop nicely BOLD="${ESC}[1m" DARK="${ESC}[2m" UNDERLINE="${ESC}[4m" BLINK="${ESC}[5m" INVERSE="${ESC}[7m" RST="${ESC}[m" styles=(BOLD DARK UNDERLINE BLINK INVERSE RST) # and the PS1-safe versions of the above for i in ${colornames[@]} ${colornames[@]/#/BG} ${styles[@]}; do eval "PS$i=\"\\[\$$i\\]\"" done Having color escapes in shell variables comes in handy from time to time (like faking 'colordiff' with sed).
- CWIZO 16y agoIs there any way to set this on directory level? I do my development in my /home/XYZ folder, and production is in /usr/local/www/XYZ and it would be great if I could set the background to red in the production dir (if I happen to wander into it somehow (which I really almost never do)).
- Toucan 16y agoYou could put a shell script around cd that checks the current working directory every time you cd and alerts you appropriately. A little clunky, I'll admit. I'd like to hear any more graceful solutions.
- 1amzave 16y agoFrom man bash, the variable PROMPT_COMMAND: If set, the value is executed as a command prior to issuing each primary prompt. e.g.: PROMPT_COMMAND='[[ "$PWD" =~ ^/sensitive/area ]] && PS1="be careful: " || PS1="normalprompt: "'
- swah 16y agoPro tip: In Terminal.app you need the checkbox "Display ANSI colors" checked.
- nodata 16y agoI prefer: PS1="\[\e[1;31m\]$PS1\[\e[0m\]"