Command Prompts

The shell has four different command prompts, called PS1, PS2, PS3, and PS4. PS stands for Prompt String. PS1 is almost always customized, the others are almost never customized.

The PS1 Prompt

PS1 was introduced in Chapter 2, “Getting Started.” It is the standard prompt that you see at the start of every line. In the examples in this book, it is generally shown as the dollar symbol followed by a space (“”), which is the standard way to indicate an unprivileged user in the Bourne and bash shells. The root user’s PS1 prompt by convention is set to, or at least ends with, “”. PS1 may contain text, but most shells also expand various special characters in the PS1 variable. In bash, the default unprivileged prompt is \s-\v\$, which is the name (\s) and version (\v) of the shell — for example “bash-4.1$ ”. Some of the most useful elements are \u (username), \h (hostname), \t (current time), and \d (date).

The full set of special characters for PS1 is described in the PROMPTING section of the bash(1) man page. One of the more interesting special characters provides allows you to set a colored prompt by entering octal character references using the standard \0xx notation. This PS1 sets a red prompt with a regular input line:

PS1="\033[1;31m\u@\h\w\$\033[0m "

The number 31 in the first \033[1;31m is the code for red; the final 0 in the \033[0m is gray, so it sets the input back to normal; only the prompt itself is red. Add 10 for a background color; so for a red ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.