Skip to content

arch-err/bash-conf

Repository files navigation

bash-conf

Modular bash configuration with fish-style abbreviations, declarative aliases, auto-detected shell completions, and Starship prompt support.

Quick Install

curl -sL https://raw.githubusercontent.com/arch-err/bash-conf/main/install.sh | bash

Or manually:

git clone --recurse-submodules https://github.com/arch-err/bash-conf.git ~/.config/bash/bash-conf
cd ~/.config/bash/bash-conf && make install

Structure

bash-conf/
├── .bashrc              # Main entrypoint — sources everything
├── inputrc              # Readline config (menu-complete, colors)
├── history.bash         # History (fzf/sk fuzzy search, XDG)
├── shellopts.bash       # Shell options (autocd, globstar, etc.)
├── prompt.bash          # Prompt (Starship or fallback PS1)
├── completions.bash     # Auto-detected shell completions
├── aliases/             # Declarative alias files
│   └── *.alias
├── abbr/                # Fish-style abbreviation files
│   └── *.abbr
├── plugins/
│   └── bash-abbrev-alias/   # Abbreviation engine (submodule)
├── Makefile             # install / uninstall
└── install.sh           # One-liner install script

Features

Prompt

Uses Starship when available, otherwise falls back to a clean PS1 with directory, git branch/status, and exit code.

Starship config is managed separately at ~/.config/starship.toml.

History

Tuned native history with fuzzy search via fzf:

  • Ctrl-R opens fzf fuzzy finder (falls back to native reverse search)
  • XDG-compliant storage at ~/.local/state/bash/history
  • 50,000 entries in memory, 100,000 on disk
  • Deduplication, timestamps, trivial command exclusion

Shell Options

Option Effect
autocd Type a directory name to cd into it
cdspell Autocorrect minor cd typos
globstar ** for recursive globbing
checkwinsize Keep LINES/COLUMNS in sync
direxpand Expand variables in path completion
dirspell Autocorrect directory names in completion
no_empty_cmd_completion Don't complete on empty line

Readline

Tab cycles through completions (menu-complete), Shift-Tab goes backward. Case-insensitive, colored stats and prefix highlighting.

Aliases

Simple key = value files in aliases/. Comments and blank lines are ignored.

# aliases/editors.alias
v = $EDITOR
nv = nvim

Add new files and they're picked up automatically — no need to touch .bashrc.

Abbreviations

Fish-style abbreviations powered by bash-abbrev-alias. Type an abbreviation and press Space to expand it inline.

Files live in abbr/ and contain abbrev-alias calls:

# abbr/git.abbr
abbrev-alias gs="git status"
abbrev-alias gco="git checkout"

Included groups: git, k8s, docker, podman, helm

Flag Description Example
(default) Expands in command position abbrev-alias gs="git status"
-g Expands anywhere on the line abbrev-alias -g G="| grep"
-e Evaluates expression on expand abbrev-alias -ge B='$(git branch --show-current)'

Completions

completions.bash auto-detects installed tools and loads their bash completions via a background cache. Only tools found on $PATH are loaded.

Standard (<cmd> completion bash): kubectl, helm, docker, podman, argocd, oc, harbor

Special cases: gh, npm, pip, rustup, cargo, uv, uvx, terraform, tea, drone

To add a standard tool, append to the __comp_standard array. For anything else, add a guarded one-liner under special cases.

Uninstall

cd ~/.config/bash/bash-conf && make uninstall

This removes the ~/.bashrc shim and the symlink in ~/.config/bash/.

About

Configuration and setup for Bash

Topics

Resources

Stars

Watchers

Forks