I’m looking for inspiration for a custom Bash prompt[1]. I’d love to see yours! 😊 If possible, include both the prompt’s PS1
, and a screenshot/example of what it looks like.
References
- Type: Documentation. Title: “Bash Reference Manual”. Publisher: Gnu Project. Edition: 5.2. Published: 2022-09-19. Accessed: 2025-03-21T02:46Z. URI: https://www.gnu.org/software/bash/manual/html_node/index.html.
- §6.9 “Controlling the Prompt”. URI: https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html.
Crossposts:
C:\>
/s
HA, that’s so cursed. I love it.
I’m using fish and the default is enough for anybody. 😁
I love it! You get git and virtual env integration for free :)
I recently started with fish and dislike that I can’t drop bash commands into it because it parses differently. That is enough to annoy me to uninstall.
You shouldn’t just “drop bash commands into it” anyways. And if you really need it, bash is only one
bash
away.
export PS1="\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\\$ "
That’s a warcrime.
How so? What does this do?
Best I can tell is it’s a normal `username@hostname current_directory$ sorta prompt with some coloring: • Red for the square brackets • Orange (color 172) for the username • Light blue (color 153) for the hostname • Amber (color 214) for the current working directory
Other than being hard to read from the embedded coloring I’m not sure why this is a war crime.
Prompt is pretty simple, mainly just adjusted coloring and added a timestamp.
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36;01m\]\t \[\033[01;32m\]\u@\[\033[01;37;01m\]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
My bash prompt is just me copying the prompt I have set on fish.
# Prompt green=$'\e[38;5;2m' bright_red=$'\e[38;5;9m' bright_green=$'\e[38;5;10m' reset=$'\e[0m' prompt_command() { local exit_status=$? if [[ $exit_status != 0 ]]; then exit_color=$bright_red exit_prompt=" [$exit_status]" else exit_color=$bright_green exit_prompt="" fi } PROMPT_COMMAND=prompt_command PS1='\[$green\]\w\[$exit_color\]$exit_prompt\n❯ \[$reset\]'
I have a small issue with this prompt though. Sometimes the ❯ ends up turning white for some reason.
Mine is simple (inspired by Kali Linux, if that’s even correct)
PS1='\[\033[0;32m\]┌──[\t] (\u@\h)-[\w]\n└─$ \[\033[0m\]'
Mine’s pretty simple:
## .bashrc export BLA=$(tput setaf 0) # Black export RED=$(tput setaf 1) # Red export GRE=$(tput setaf 2) # Green export YEL=$(tput setaf 3) # Yellow export BLU=$(tput setaf 4) # Blue export MAG=$(tput setaf 5) # Magenta export CYA=$(tput setaf 6) # Cyan export WHI=$(tput setaf 7) # White export BOL=$(tput bold) # Bold export ITA=$(tput sitm) # Italic export UL=$(tput smul) # Underline export NC=$(tput sgr0) # No color & format _branch() { local branch=$(__git_ps1 "%s") if [[ -z $branch ]]; then printf "${BLA}null${NC}" else printf "${CYA}$branch" fi } PS1='.\[$(_pwd)\] \[$BLA\]〜 \[$MAG\]git\[$BLA\]:\[$(_branch)\] \n \[$NC$CYA\]\! \[$MAG\]\$ \[$NC\]' ## .inputrc set vi-ins-mode-string \1\e[34m\2.INS set vi-cmd-mode-string \1\e[33m\2.CMD
Mine shows the full path and a new line for commands.
It will also print the exit code of the last command in red above the prompt, if the exit code is not 0.
PS1='$(ec=“$?”; if [ $ec -gt 0 ]; then echo -e “\n”[\e[91m]“exit code: $ec”[\e[0m]; fi)\n[\e[92m]\u[\e[38;5;213m]@[\e[38;5;39m]\h[\e[0m]:$PWD\n$ ’
export PS1="\[\e]0;\u@\h:\w\a\]\[\e[1;34m\]\u@\h:\w\[\e[0m\]\$ "
I am a simple man.
I use zsh, but my old Bash prompt looks almost the same as my Zsh prompt. Sorry, no screenshot, but here’s the code:
export PS1='\[\033[01;34m\][\[\033[01;37m\] \W\[\033[01;34m\]]\$\033[01;34m\] $(git branch 2>/dev/null | grep '^*' | colrm 1 2)\n\033[01;34m└─>\033[37m '
I like Liquid Prompt[1] (A useful adaptive prompt for Bash & Zsh) Examples:
θ70° 2z termight@zone51:~ $ vi .bashrc
θ71° 2z termight@zone51:~/docker/invidious master(+34/-17)* ±
computer /usr/share/ $>
PS1='\[\e[1m\][\[\e[92m\]\u\[\e[0m\]@\[\e[96;1;3m\]\h\[\e[0;1m\]]\[\e[0m\] \[\e[1m\][\[\e[38;5;226m\]\w\[\e[39m\]]\[\e[0m\] \[\e[97;1m\]~\[\e[92;5m\]\$\[\e[0m\] '
Note: The “$” prompt flashes like a typical cursor.
[username@host ~]$ >