Shell quality-of-life setup for Bash: history, completion, keybindings, shopt options, zoxide/fzf integration, and modern CLI tools (ripgrep, bat, eza). No aliases. Optionally installs oh-my-bash.
bash-qol/
├── bash-qol # entry point: flag parsing + orchestration
├── requirements.sh # apt: bash-completion, fzf, zoxide, ripgrep, bat, eza, chafa, git
├── lib/
│ ├── paths.sh # shared path/marker constants
│ ├── shell-config.sh # ~/.bashrc + ~/.inputrc (history, completion, keybindings, shopt)
│ ├── omb.sh # oh-my-bash: manual install + theme (interactive or by name)
│ └── demo.sh # showcase of eza, bat, ripgrep, and interactive features
└── README.md
./bash-qol # packages, ~/.bashrc, and ~/.inputrc
./bash-qol --omb=interactive # + oh-my-bash, chafa theme picker
./bash-qol --omb=non-interactive --theme=NAME # + oh-my-bash, no prompts
./bash-qol --demo # + showcase as a final step
./bash-qol --help
Flags combine freely, e.g.:
./bash-qol --omb=non-interactive --theme=agnoster --demogit clone https://github.com/rebootless/bash-qol.git && \
cd bash-qol && chmod +x bash-qol &&\
./bash-qolInteractive oh-my-bash setup:
git clone https://github.com/rebootless/bash-qol.git && \
cd bash-qol && chmod +x bash-qol &&\
./bash-qol --omb=interactive --demoRules:
--themeis only valid together with--omb=non-interactive.--omb=non-interactiverequires--theme=NAME.- Unknown theme names fail with the actual list of themes shipped in
~/.oh-my-bash/themes.
Only the manual integration is supported: oh-my-bash is git-cloned to
~/.oh-my-bash, and a small block is prepended to the top of
~/.bashrc — nothing else in the file is touched. The official installer
is intentionally not used because it replaces ~/.bashrc wholesale.
Re-running is always safe:
requirements.sh—apt-get installno-ops on installed packages.- Managed blocks in
~/.bashrc(# >>> bash-qol >>>/# >>> oh-my-bash >>>) are replaced, not duplicated. Before each update, the previous file is backed up as~/.bashrc.bak.<timestamp>. ~/.inputrcis replaced outright, with the same backup pattern.
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.