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:

  • beirdobaggins@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    21 hours ago

    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$ ’

  • SinkingLotus@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    1 day ago

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

    image

    Note: The “$” prompt flashes like a typical cursor.

    • Azzk1kr@feddit.nl
      link
      fedilink
      English
      arrow-up
      4
      ·
      2 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).

      • mbirth@lemmy.ml
        link
        fedilink
        arrow-up
        3
        arrow-down
        1
        ·
        2 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.

    • PlutoniumAcid@lemmy.world
      link
      fedilink
      arrow-up
      3
      arrow-down
      3
      ·
      2 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.

      • mbirth@lemmy.ml
        link
        fedilink
        arrow-up
        8
        ·
        2 days ago

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

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      16
      arrow-down
      1
      ·
      3 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.)

      • fluckx@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        2 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

    • tankplanker@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      2 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

  • Asparagus0098@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 days ago

    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.

  • TheFadingOne@feddit.org
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    2 days ago

    I’m mainly using zsh but I have a backup bash prompt that closely mirrors it. It shows the return value of the previous command if it’s non-zero and gives some information about the current git repository if there is one.

    retval() {
            if [ $? -eq 0 ]; then
                    printf ""
            else
                    printf "\001\e[31m\002($?)\001\e[0m\002"
            fi
    }
    
    gitbranch() {
            if type git 2> /dev/null 1> /dev/null && git rev-parse 2> /dev/null 1> /dev/null ; then
                    MODIFIED=""
                    if [[ -n $(git status --short) ]]; then
                            MODIFIED=" M"
                    fi
                    BRANCH=$(git rev-parse --abbrev-ref HEAD)
                    SHORTREF=$(git rev-parse --short HEAD)
                    printf "\001\e[31m\002%s\001\e[0m\002(%s)\001\e[31m\002%s\001\e[0m\002" $BRANCH $SHORTREF $MODIFIED
            else
                    echo -n ""
            fi
    }
    
    export PROMPT_DIRTRIM=3
    
    PS1='$(retval)[\001\e[1;95m\002\u\001\e[0m\002@\h : \w $(gitbranch)] \$ '
    PS2='> '
    

  • golden_zealot@lemmy.ml
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    1
    ·
    3 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\]\$ '

  • Xanza@lemm.ee
    link
    fedilink
    English
    arrow-up
    9
    ·
    3 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@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          2 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.

  • Rivalarrival@lemmy.today
    link
    fedilink
    English
    arrow-up
    7
    arrow-down
    1
    ·
    2 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.

  • nore {she/her}@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 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