Top 10 Downloads
  Last 15 New Files
  Web Links
  Last 15 New Tips
  NLM Programming
  Admins Club

SUPLA System
Internet of Things

Installation and Administration

Polish Forum SUSE

Who's Online

 There are currently,
6 guest(s)
that is (are) online.

Technical Information

Back to List of Categories

Technical Information about
  A Little YaST Magic
  A Slideshow for Your KDE Wallpaper
  Add Novell Support to Your Firefox Search Engine
  Adding To The Panels In Gnome.
  Akregator - RSS News Reader
  An Introduction to WBEM and OpenWBEM in SUSE LINUX
  Authenticating SUSE LINUX to eDirectory via LDAP
  Basic Mounting Differences between Windows and Linux
  Beginner's Guide to Using Novell SUSE LINUX's Build Utility
  Browsing Files
  Card Readers on SUSE LINUX 9.2 Professional?
  Changing the Default Browser in Gnome
  Developing Perl CGI scripts on SUSE LINUX
  Do I Have Permission?
  Double SYNC -- Using RSYNC Simultaneously With and Without Branch Office for Data Backup
  Dumb Question: Mounting Linux CDs
  Easy Command-Line Introduction
  Easy Way to Debug SSL Connections
  Enabling an Interactive Startup in Novell/SUSE LINUX
  Exploring MySQL 4.1 and PHP 5 on SUSE LINUX
  Extend Your Panels Using Gnome Drawers.
  Firefox Speed Tip
  Fix Java Errors With ConsoleOne On Linux
  Fix Your Mouse Wheel...
  Gimp -- Closing In on Photoshop...
  Gimp Tips Part 1: Resizing Images
  Gimp Tips Part 2: Rounding Corners
  Gimp Tips Part 3: Fading Photography Edges
  Gimp Tips Part 4: Selective Colorization
  Gimp Tips Part 5: Plugins a Plenty - Adding Light
  Gimp Tips Part 6: Using The Clone Tool
  Google Auto-fill Replica for Linux
  How a Corrupted USB Drive Was Saved by GNU/Linux
  How to Implement Login Scripts into a Pure Linux Environment
  How to install and connect an External Modem on a Linux PC
  How to Install the Novell Client for Linux on SUSE Linux 10.0
  How to launch applications at login in Gnome
  How to Remote Control Linux
  How to setup a Linux application to automatically startup when you login.
  How to share Files and Printers Between Linux and MS Windows with Samba
  How to uninstall the Novell Client for Linux
  How to upgrade the Novell Client for Linux
  How to use SMB without turning off the firewall
  How's the Weather?
  HTML Development Tools in Linux
  Informative Bash Prompt
  Install and Use QEMU on SUSE 9.2
  Install Linux Frequently, Without the Hassle
  Installing Apache, PHP, and MySQL on SUSE LINUX Professional
  Installing RPM Files
  Integrating Novell Linux Desktop into a Novell NetWare network
  Introduction to Oracle 10g R1 ( on SUSE LINUX Professional 9.3
  iPrint Printers on Novell Linux Desktop
  Linux Scheduling Priorities Explained
  Make a Misbehaving Program Quit
  Manually Mounting a USB Flash Drive in Linux
  Migrating To Linux, Advantages Over Windows 9.x And XP
  Minimize Your Maximizing with Multiple Desktops
  Mounting NetWare Volumes On NLD Illustrated
  Move Your /home to Another Computer
  Mozilla Mail Review
  Need a Backup?
  Novell Client Settings with Windows Terminal Server
  Novell Linux Desktop Equivalents of Windows Software - New and Improved
  Novell Linux Desktop System Upgrade How-To
  Partitioning Hard Drive for Linux Install
  Perform Remote SuSE Installations With Virtual Network Computing
  Quick Intro to Klipper
  Quick Shortcuts in The Gimp
  Reset Your Lost Root Password
  Resizing Your Gnome / KDE Panels
  Runlevels in SUSE LINUX
  Running Existing Win32 Applications on SUSE LINUX
  Service Command in /etc/init.d/
  Setting Shortcut Keys
  Setting up a Linux NFS Install Source for Your LAN
  Should I choose Novell Linux Desktop or SUSE LINUX Professional as my desktop?
  Starting Services From the Command Line On SuSE LINUX
  Sticky Notes for Gnome
  SUSE LINUX 9.3 Professional Review
  Sync Up The Taskbar and the Desktop in Gnome
  System Upgrade How-To
  Taking Screenshots in Linux
  The Basics of Messaging in the Cross-Platform GroupWise Client
  The Novell Client for Linux (beta).
  Transparent Panels in Gnome
  Trick Out Your KDE Desktop
  Understanding the YAST Software Module Options
  Updating Your Software with Red Carpet
  Using dsbk on Linux and Unix
  Using iFolder to Synchronize Firefox Bookmarks
  Using Multiple Swap Partitions In 2.4
  Using openSSH to Securely Access Remote Systems
  What FTP client should I use on Linux?
  What Is Logical Volume Management?
  What is so great about Firefox?
  Which Graphic Formats For What?
  Windows Shortcuts for Firefox Tabs on Linux
  Windows to Linux: A Beginner's Guide
  Windows Users Can Feel at Home Exploring Files in Linux
  WLAN interface as the Default
  Work With User Selection Icons In KDM
  YAST Online Update De-Mystified

Technical Information
 Informative Bash Prompt

Printer-friendly version

Posted: 1 Jun 2005

Informative bash prompt

The normal bash prompt in SuSE Linux contains the username, the machine name and the working directory. I don't need much more, but I like to have it clearer visible (colored). I also want to be informed if an application exited with exitcode > 0. Additionally, it's very useful to have username, hostname and the working directory in the xterm title.

This is my prompt:

cb@tux:/tmp> false
   [1]   cb@tux:/tmp> su

You can see that the false command exited with status 1 as expected. You can also see that root sessions are highlighted separately.

How does this work?

I changed my prompt ($PS1) for the described features. The most important change is displaying the exitcodes if they are not zero. My /etc/bash.bashrc.local contains:

# PS1version=' [e[46m]8.1[e[0m]'
PS1error='$( ret=$? ; test $ret -gt 0 && echo "[e[41;93m]   [$ret]   [e[0m]" )'
PS1user="$( test `whoami` == root && echo '[e[101m]' )u[e[0m]"
PS1color='[e[1;37;44m]' # color of working directory
PS1="$PS1error$PS1user@h:$PS1colorw[e[0m]$PS1version> "
tty | grep pts > /dev/null && PS1="$PS1[e]0;w - u@ha]";
export PS1

What do all those commands and variables do? I'll explain each step.

  • The (commented out) line PS1version is useful in chroot environments and helps me in looking through the different systems. If activated, the prompt contains the additional text 8.1 with cyan background.
  • PS1error prints the exitcode and its colored formatting - except if it was zero (= success). In this case, nothing is printed.
    The variable $ret is necessary because test changes $?.
  • PS1user displays the current username - normally unformatted, only root gets a light red background.
    The usage of whoami has the advantage of always telling the correct username. The bash-internal $USER variable is only correct with su - (or real logins), but not when just using su.
    By the way, $PS1user is expanded directly when parsing bash.bashrc.local - that means whoami is only called once in a session.
  • PS1color contains the color codes for highlighing of the working directory. The advantage of putting this in its own variable is that it can be changed easier.
    Tip: I use different colors on several machines and can recognice the xterms by color ;-)
  • The line PS1=... composes the "real" prompt. It puts all the PS1... variables together and adds some more details.
    Important: $PS1error is still not expanded here. It is evaluated each time the promt is shown.
  • Using tty | grep pts ... puts the working directory, username and host into a xterm's title bar - if you are in one. Otherwise, it changes nothing.
  • Finally the variable $PS1 gets exported (export $PS1) to be really useable.

Reading tips about this topic: man console_codes explains all the colorful parts of my prompt, man bash explains all about the promt in general. Additionally, the bash prompt howto is worth reading.

Available colors

for i in `seq 1 7 ; seq 30 48 ; seq 90 107 ` ; do 
    echo -e "e[${i}mteste[0m$i" 

shows a list of available colors.

The colors 90-107 are not documented in man console_codes. Before using them, use the above loop to test if they are supported on your system.

Since 2003

Portal posiada akceptację firmy Novell Polska
Wszystkie materiały dotyczące produktów firmy Novell umieszczono za zgodą Novell Polska
Portal has been accepted by the Novell Polska
All materials concerning products of Novell firm are placed with Novell Polska consent.
NetWare is a registered trademark of Novell Inc. in the United States and other countries.
Windows is a trademark or a registered trademark of Microsoft Corporation in the United States and other countries.
Sybase is a registered trademark of Sybase Inc. in the United States of America.
Other company and product names are trademarks or registered trademarks of their respective owners.