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:

  • NostraDavid@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    3 days ago

    You can see here my theme with autodetect of Python (I work a lot in Python). The orange bit is the error code returned by the previous command. Git is supported as well, and looks pretty much like powerline-gitstatus, as you’ll read about below.

    NostraDavid's Starship theme, based on powerline-status + powerline-gitstatus

    First, lets make Bash a little better:

    # throw this in your `~/.bashrc`, and then `source ~/.bashrc` for it to take effect, or just restart your terminal.
    
    # == shopts ==
    # https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
    shopt -s autocd         # cd into folder without cd, so 'dotfiles' will cd into the folder
    shopt -s cdspell        # attempt spelling correcting on folders
    shopt -s direxpand      # expand a partial dir name
    shopt -s checkjobs      # stop shell from exit when there's jobs running
    shopt -s dirspell       # attempt spelling correcting on folders
    shopt -s expand_aliases # aliases are expanded
    shopt -s histappend     # append to the history file, don't overwrite it
    shopt -s histreedit     # lets your re-edit old executed command
    shopt -s histverify     # I'm confused.
    shopt -s hostcomplete   # performs completion when a word contains an '@'
    shopt -s cmdhist        # save multiple-line command in single history entry
    shopt -u lithist        # multi-lines are saved with embedded newlines rather than semicolons; explictly unset
    shopt -s checkwinsize # update LINES and COLUMNS to fit output
    

    Autocd is a big one here, cdspell and direxpand as well. Ensures I don’t need Zsh for the same experience. With Zsh I’d just get annoyed by small stuff like having to wrap things in quotes (I think pip install some_lib[some_extra] works in Bash, but not in Zsh And Ohmyzsh just felt it kept slowing things down, so I actually dislike Zsh ^(please don’t kill me) >_>

    Anyway, I based this on powerline-status + powerline-gitstatus (if you want to use that instead (no, my config doesn’t work), just sudo apt install powerline-status powerline-gitstatus - DO NOT USE THE PYPI VERSION (it’s too outdated, and a pain to install)) because I had issues with finding the right combination of my configuration and which libraries to install for bash - there are too damn many: powerline-bash, powerline-status, powerline-rs, powerline-go, etc, etc. And they all do things just that little bit different.

    Anyway, here is my ~/.config/starship.toml (archive1, archive2). It’s a little long, and can probably be shortered, but that might break something again, and I’m not willing to risk anything right now.

    https://gist.github.com/NostraDavid/675a0706716b98816fd2809560ffe42c