How to customize your Ubuntu terminal prompt

This tutorial guides you to customize the look of the Ubuntu Terminal. The second part of the article can be applied to any other distribution as well.


The Terminal in Ubuntu, or in any GNU/Linux distribution for that matter, is the essential tool of all. It is the tool that is used to control, manipulate, and administrate over the whole system or even a group of systems.

Even though it looks like just a prompt with a host-name and user-name, its look has been improved over Linux’s years and is aesthetically pleasing in most graphical distributions now. Here, we’re going to explain how users can customize the look of their Terminal in the most commonly used distribution, Ubuntu. The final part of this article can be used in any other distribution as well.

Terminal Customization

Using the ‘Preferences‘ option:

Ubuntu’s Terminal has an existing ‘Preferences‘ option that can be used to customize the Terminal to some extent. It can be accessed by simply right-clicking on an empty area in the Terminal, and choosing ‘Preferences.’

Accessing preferences.
Accessing preferences


There are various options listed under multiple tabs. They have been listed and explained concisely below:

1. Text

Let’s explore the basic possibilities of changing the text style in the Terminal and some other options.

  • Terminal dimensions (in terms of rows and columns)
  • Font and font size
  • Spacing between cells
  • Cursor shape and blinking mode

Text options
Text options

2. Colors

Changes available are:

  • Available color themes
  • Default background and foreground (text) color
  • Bold text, cursor, and highlighted text color
  • Transparency slider

Color options
Color options

3. Scrolling

Options here are to:

  • Enable/disable scrollbar
  • Scrolling on output (the cursor comes back down to the bottom if there is new output)
  • Scrolling on keystrokes (the cursor comes back down to the bottom if any key is pressed)
  • Scrolling limit

Scrolling options.
Scrolling options

Those were all options that are provided by default for changes in the Terminal.

Customization using .bashrc file

Editing the parts and layout


Every Linux distribution has a Bash profile customization file in the home directory. It can be used (very extensively) to change the prompt’s appearance and function. The prompt is the part that comes up after a user logs into a user account. The default Ubuntu prompt looks like this:

Ubuntu default PS1
Ubuntu default PS1

The first part is the username, followed by the ‘@’ sign, and the host-name (the name of the system/server). Then there is the location of the working directory and finally a ‘$’ sign, indicating that its a non-root user. The root user has a ‘#’ sign, instead.

In conclusion, the default prompt looks like:


This prompt is represented by the name ‘PS1‘. The Bash profile file can be used to customize the PS1 prompt in multiple ways.

The default prompt is expressed as:


It can be explained as:

  • \u: The username of the user
  • @: The ‘@’ symbol
  • \h: The host-name of the system
  • ‘:’: The ‘:’ symbol
  • \w: The path of the working directory
  • \$: The ‘$’ symbol

Thus creating the default prompt layout. Now, some of the other options are the following:

  • \d: Date in the format ‘Weekday Month Date’ (like ‘Tue October 1’).
  • \t: Time in HH:MM: SS format.
  • \n: A newline (goes to the next line)

A more extensive list is available here. Now that we have learned a bit, we can try these out. However, for safety, save your current format using this command:


It saves the current format of PS1 to the variable ‘DEFAULT.’ Now, if we want to try just having the user name in the prompt, how would that be? According to the codes, just ‘\u.’ Therefore, we have to enter the following command:

PS1="\u$ "

The ‘$’ is necessary to act as a border. The expected result shows up:

Only username
Only username

We can even add Bash commands to show up in the prompt. That can be done the following way:

PS1="[`uname -sr`] \u$ "

Username and a command
Username and a command

The command that we used, “uname -sr,” prints the Linux Kernel version. Similar to this, you can use pretty much any other command. You can also add simple text like this:

PS1="(This is just sample text) \u$ "

Sample text
With sample text

NOTE: Brackets come off merely as brackets.


You can now revert to the original layout using:


Adding colors

Now we can move on to the difficult things, that is the actual .bashrc file. If we see the PS1 variable set there, it looks something like this:


Not to worry, this is pretty simple too. You can see at first glance, that there is a pattern here. Opening using ‘\[‘ and closing using ‘\]‘. Other than that, there is always a ‘033′ before the other bunch of numbers and signs. What do these mean?

The ‘\[‘ and ‘\]’ indicate that the characters included within are non-printing characters, and denote some formatting of the text. It applies till another formatting bracket like itself, or to the whole part after this is written (if no other formatting is applied).

The ‘033’ denotes that the formatting is of color and look of the text.

The part that expresses color

The parts that express colors are the numbers ending with ‘m‘ So, ‘xxm‘ denotes a color. Some of these standard colors are:

  • 30: Black
  • 31: Red
  • 32: Green
  • 34: Blue
  • 37: White
  • 35: Purple
  • 33: Yellow

More elaborated lists can be found easily.

Okay, cracked most of it, just the leftover part is the numbers before semicolons that some of the colors have. These denote some specific text formatting, like the text being bold, underlined, etc. Some codes are as given:

  • 0: Normal text
  • 1: Bold text
  • 4: Underlined text
  • 2: Dim text
  • 8: Hidden text

Phew! Finally, let’s try having just a username, in color red, and formatted bold. The command would look something like:

PS1="\[3[1;31m\]\u$ "

Color changes
Color changes

Breaking it down one last time:

  • \[ : Opens formatting bracket
  • 033: Tells that this is going to format the text color and formatting.
  • [1; 31m: Tells that the text should be bold, and of the color red.
  • \]: Closes formatting bracket
  • \u: Fetches user name

NOTE: Remember; the square bracket opened after ‘033‘ is not supposed to be closed.

Now for the final part, manipulate everything you have learned to create the perfect PS1 format for yourself, and add it permanently the following way:

nano ~/.bashrc

Go to the end of the file, and enter your desired PS1 format.

Editing .bashrc
Editing .bashrc

Press CTRL + X, hit ‘Y’ and press ‘Enter’ to save the file.

New formatted PS1
New formatted PS1


So that’s (almost) everything you need to know about customizing your Terminal. The latter part of the article can go much deeper, but we have kept it to a limit so that users don’t get confused. I hope you enjoyed the article.

Pulkit Chandak
Pulkit Chandak is a Linux enthusiast and has been using and experimenting with open source software and hardware too since a long time. He is a huge admirer of open source software and wants to ventilate it to all around him. He is interested in reviewing and writing tutorials on Linux and its many distributions. He believes that freedom in software leads to freedom of the mind from the chains of limits.


Please enter your comment!
Please enter your name here




Top 20 Git Commands with Practical Examples

If you are here reading this post, there is a high probability that you have heard or interacted with Github, and you now want to learn Git. Before we continue with showing you some of the cool Git commands, let's understand the difference between Git and GitHub.

Top 10 New Features in Linux Kernel 5.7

Linus Torvalds has announced the release of Linux Kernel 5.7 after seven weeks of development. The release announcement comes as a piece of exciting news as it brings a host of new features for the hardware manufacturers as well as the developers.

How to install CMake on Ubuntu

CMake is a cross-platform free and open-source software tool designed to build, test, and package the software. CMake uses a simple platform and compiler-independent configuration files to control the software compilation process.

How to install Lightworks on Ubuntu

Even though Linux may not get a native installer of video editing software like Adobe Premiere or Final Cut Pro, that doesn't mean there are no industry standards tools available. Lightworks is non-linear editing (NLE) video mastering app for Windows, Linux, and macOS. Installing it on Ubuntu is simple due to deb package availability.

How to install DaVinci Resolve on Fedora

Davinci Resolve is a professional application used for color correction, video editing, visual effects, and motion graphics. It is one of the extensively used software by movie industries located in Hollywood.

The 10 Best Programming Languages for Hacking

One of the significant entities we have in Cyber Security is Ethical Hacking (ETH). It is the process of detecting and finding flaws or vulnerabilities in a system that a hacker would exploit.


Linux is growing faster than ever. As per the latest report, there is a drop in the Windows 10 market share for the first time, and Linux's market share has improved to 2.87% this month. Most of the features in the list were rolled out in the Pop OS 20.04. Let's a detailed look into the new features, how to upgrade, and a ride through video.
Elementary OS 5.1 Hera has received a point release with a handful of new features and bug fixes, and we will be reviewing the significant changes in this article. For those new to elementary OS, this Ubuntu-based Linux distribution uses their inhouse built Pantheon desktop environment and AppCenter.

5 ways to send emails using the command-line in Linux

Did you master using the command-line in Linux? There is no limit to what one can do via the Linux Terminal. One of such things we are going to discuss today are methods of sending an email using the command-line.

10 ways to use the Chown command with examples

Any file in a Linux system belongs to a particular owner(s) and a group. It is one of the many features that maintain security in Linux systems. For example; If a file belongs to say UserA, then UserB cannot manipulate the data depending on any additional permissions set unless the user has permission to do that.

Guide to watching Disney+ on Linux

Disney Plus or Disney+ is an on-demand entertainment streaming service in which you should see the content produced by Disney Studios, Star Wars, Marvel, Pixar, and National Geographic. The service was launched on the 12th of November 2019.

Enabling GameMode on Linux for best gaming performance

GameMode is a combination of various libraries and daemons that allows all the users to improve the gaming performance on the Linux system. Developed by games publisher Feral Interactive, it improves gaming performance by requesting a group of options that will be applied temporarily to the Linux system.