- Buy Microsoft Visio Professional or Microsoft Project Professional 2024 for just $80
- Get Microsoft Office Pro and Windows 11 Pro for 87% off with this bundle
- Buy or gift a Babbel subscription for 78% off to learn a new language - new low price
- Join BJ's Wholesale Club for just $20 right now to save on holiday shopping
- This $28 'magic arm' makes taking pictures so much easier (and it's only $20 for Black Friday)
Tailoring your Linux command prompt
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="[ 33[10;95m]yes?> [ 33[0m]"
The [ 33[10;85m] string changes the font color to purple and the [ 33[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=’"[ 33[10;95m]yes?> [ 33[0m]"’ >> ~/.bashrc yes?> tail -1 ~/.bashrc PS1=”[ 33[10;95m]yes?> [ 33[0m]”
And here are some other colors that you can choose from:
black=' ;30[0m' lightgray=' 33[37m' red=' 33[31m' blue=" 33[34m" lightgreen=' 33[32m' reset=" 33[0m" cyan=' 33[36m' orange=" 33[33m" white=" 33[37m" darkgray='1;30m' pink=' 33[31m' green=' 33[32m' purple=" 33[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.
Copyright © 2023 IDG Communications, Inc.