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
  1. 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.

Crossposts:

  • pewpew
    link
    fedilink
    1
    edit-2
    2 days ago

    Ok after viewing your prompts I noticed that mine is kinda lame

    • @jcgA
      link
      34 days ago

      Convert the PWD value to use backslashes, too, for extra cursedness.

    • hallettj
      link
      fedilink
      English
      76 days ago

      Do you have anything to check whether the current directory is under /media/ or /mnt/ so that you can change the drive letter according to a deterministic assignment?

      /s

  • z3rOR0ne
    link
    fedilink
    3
    edit-2
    6 days ago

    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 '
    
    • Ephera
      link
      fedilink
      English
      176 days ago

      Same. I guess, this is the Starship thread now. My config:

      I adapted it from the Gruvbox Rainbow theme.
      I can post my config, if anyone wants specifically that. (It does kind of assume a light background, though.)

      • @[email protected]
        link
        fedilink
        36 days ago

        I like the timer and the error icon on a fail. I can’t recall how often I think: damn this is taking too long. I should’ve timed the command

    • @[email protected]
      link
      fedilink
      26 days ago

      Another starship user. Mostly want it to summarise useful stuff for folders pulled from git or whatever so it’s pretty plain rest of the time. I use the same on all my boxes

    • Mike Wooskey
      link
      fedilink
      English
      26 days ago

      Starships looks very interesting! I’m going to check it out. Thanks!

    • billwashere
      link
      fedilink
      English
      16 days ago

      Yeah I’m gonna check this out at work next week for sure.

    • @[email protected]
      link
      fedilink
      English
      46 days ago

      Fish is a really great shell for daily use. There’s so much built in, its scripting language is better (not portable though if someone else does not have fish).

      • @[email protected]
        link
        fedilink
        26 days ago

        By now, enough people have fish that you can basically assume those scripts being “portable”. Far better than nushell or xonsh - which are both pretty advanced shells but other tools lack support for them, e.g. Midnight Commander.

    • Drew
      link
      fedilink
      46 days ago

      I love it! You get git and virtual env integration for free :)

    • @[email protected]
      link
      fedilink
      06 days ago

      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.

      • @[email protected]
        link
        fedilink
        96 days ago

        You shouldn’t just “drop bash commands into it” anyways. And if you really need it, bash is only one bash away.

  • @[email protected]
    link
    fedilink
    English
    96 days ago
    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\]\\$ "
    
        • billwashere
          link
          fedilink
          English
          36 days ago

          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.

  • @[email protected]
    link
    fedilink
    English
    96 days ago

    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\]\$ '

  • @[email protected]
    link
    fedilink
    English
    66 days ago

    I didn’t even know I needed to edit my prompt, but now I don’t know how I have lived with it for so long.

  • Mike Wooskey
    link
    fedilink
    English
    6
    edit-2
    6 days ago

    Mine shows the user and host, git commit and branch, docker context and directory, color coded based on status of git:

    [root@server001|G:19e526e@(master)|D:myContext|currentDir] $

    ## PS1 adapted from https://gist.github.com/xenji/2292341
    ps1_generator() {
        # docker context inspect --format '{{ .Name }}'
        Time12h="\T"; Time12a="\@"; ShortHost="\h"; Username="\u";
        PathShort="\W"; PathFull="\w"; NewLine="\n"; Jobs="\j";
        test -f ~/.config/git-prompt.sh || \
            curl -L https://raw.github.com/git/git/master/contrib/compl
    etion/git-prompt.sh \
                 > ~/.config/git-prompt.sh
        source ~/.config/git-prompt.sh
        Color_Off="\[\033[0m\]"; IBlack="\[\033[0;90m\]"; BWhite="\[\03
    3[1;37m\]"; BGreen="\[\033[1;32m\]";
        BIRed="\[\033[1;91m\]"; BIWhite="\[\033[1;97m\]"; BIPurple="\[\
    033[1;95m\]"; BIBlue="\[\033[1;94m\]";
        GIT_PS1='$(git branch &>/dev/null;\
    if [ $? -eq 0 ]; then \
      echo "$(echo `git status` | \grep "nothing to commit" > /dev/null
     2>&1; \
      DIRTY="$?"; \
      HEADREV=`git log --pretty=%h -n 1`; \
      echo -n "|G:'${BWhite}'$HEADREV"; \
      if [ "$DIRTY" -eq "0" ]; then \
        # @4 - Clean repository - nothing to commit
        echo "@'${BGreen}'"$(__git_ps1 "(%s)"); \
      else \
        # @5 - Changes to working tree
        echo "'${BIBlue}'@'${BIRed}'"$(__git_ps1 "{%s}"); \
      fi)'${Color_Off}'"; \
    else \
      # @2 - Prompt when not in GIT repo
      echo ""; \
    fi)'
        if docker context inspect >/dev/null 2>&1; then
            DOCKER_PS1='|D:'${BIBlue}'$(docker context inspect --format
     "{{ .Name }}")'${Color_Off}
        fi
        USER_PS1=${BIPurple}${Username}'@'${ShortHost}${Color_Off}
        PATH_PS1='|'${BWhite}${PathShort}${Color_Off}
        export PS1='['${USER_PS1}${GIT_PS1}${DOCKER_PS1}${PATH_PS1}'] $
     '
    }
    ps1_generator && unset -f ps1_generator
    
  • nore {she/her}
    link
    fedilink
    English
    56 days ago

    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
    
  • @[email protected]
    link
    fedilink
    46 days ago

    Mine is simple (inspired by Kali Linux, if that’s even correct)
    PS1='\[\033[0;32m\]┌──[\t] (\u@\h)-[\w]\n└─$ \[\033[0m\]'