Tailoring your Linux command prompt

Here's how to change your Linux command prompt to something you might like better.

A U.S. dollar sign casts a question mark shadow.
Sinemaslow / Getty Images

The command prompt in a Linux terminal window is often just a $ unless you’ve logged in or sudo’ed your way into the root account, in which case you'd expect a #.

Sometimes, though, your prompt will be more complicated, with a format like [lucky@fedora ~]$. But it's possible to change your prompt to some friendlier character, word, or phrase, and if you’re so inclined, you can even change its color. This post shows how easy it is to make these kinds of changes.

Changing the format

To get started, one thing you need to know is that your command prompt is not just something your shell creates on the fly. Instead, it’s a variable and its name is PS1. To see how your prompt is defined, display its value like this:

-bash-5.1$ echo $PS1
\s-\v\$

In the case shown above, the prompt contains the name of the shell (bash) and its version (5.1). That’s what those letters (\s and \v) indicate when you look at how it’s defined. To change to this format, you would use a command like this:

$ PS1="\\s-\\v\\\$ "

Another often-used prompt format includes the username and hostname as in the example below.

[jdoe@fedora ~]$ echo $PS1
[\u@\h \W]\$

You would use a command like the one below to change your prompt to this format.

PS1="[\u@\h \W]\$ "

To change to simply a dollar sign, do this:

$ PS1="$ "

Keep in mind that the blank at the end of these prompt definitions is needed to separate the prompt from the commands that you will be typing.

Changing the text

While most Linux users stick with one of the standard prompts, there’s nothing that says you must. If you prefer a “>” or a “?”, that will work.

$ PS1="> "
$ PS1="? "

In fact, you can be creative with your prompt.

$ PS1="What now?> "
$ PS1="Ready for a break?> "

To change your prompt to include the date in mm/dd/yy format, use a command like this one:

PS1="`date +%D`> "

Changing the color

To change your prompt to a different color, you have to first identify the color you want to use and express it to bash or whatever shell you are using in a way that it can understand. When I change my prompt to "yes?> " in a lively purple font, I use a command like this:

PS1="\[\033[10;95m\]yes?> \[\033[0m\]"

The [\033[10;85m] string changes the font color to purple and the [\033[0m\] changes it back so that only my prompt takes on the new color, clearly differentiating it from everything else that I type on the command line.

Changing your .bashrc file

It’s important to remember that you have to save your new prompt definition in your .bashrc (or other shell startup) file to preserve the changes. Add it to the end to override any other prompt definitions. For example:

yes?> echo PS1=’"\[\033[10;95m\]yes?> \[\033[0m\]"’ >> ~/.bashrc
yes?> tail -1 ~/.bashrc
PS1=”\[\033[10;95m\]yes?> \[\033[0m\]”

And here are some other colors that you can choose from:

black='\0;30[0m'        lightgray='\033[37m'    red='\033[31m'
blue='\033[34m'         lightgreen='\033[32m'   reset='\033[0m'
cyan='\033[36m'         orange='\033[33m'       white='\033[37m'
darkgray='\1;30m'       pink='\033[31m'
green='\033[32m'        purple='\033[35m'

Wrap-Up

The command prompt in a Linux terminal window is as flexible as you want it to be, and making changes is surprisingly easy. Just don't forget to add your new PS1 format to the end of your .bashrc file.

Related:

Copyright © 2023 IDG Communications, Inc.

The 10 most powerful companies in enterprise networking 2022