bashrc.ui is a browser-based tool at moksha.agency/bashrc-ui. You pick your shell (bash or zsh), browse more than 60 categorized snippets, toggle the ones that match how you work, and download a ready-to-use config file. No account. No sign-up. No settings to sync. Just a clean file you drop into your home directory.

The problem with shell configs

Shell configuration has a discoverability problem. The things that would save you the most time are the things you don't know to look for. A developer who has never seen HIST_IGNORE_ALL_DUPS will keep wondering why their history is full of repeated commands. Someone who hasn't come across setopt CORRECT will keep typing cd Desktp and hitting enter, getting an error, fixing the typo, hitting enter again.

The knowledge exists. It's spread across blog posts, dotfile repos on GitHub, Reddit threads, and decade-old answers on Unix Stack Exchange. The problem is you have to know what to search for, and then you have to trust that what you found is safe to put in your shell config.

The knowledge gap isn't technical — it's curatorial. Most developers know how to add an alias. What they don't know is which 20 out of a possible 200 options are actually worth adding.

The standard answer to this problem is "look at someone's dotfiles on GitHub." And there are some great dotfile repos out there. But reading someone else's heavily customised .zshrc is like reading their journal — technically possible, but not a great way to extract just the parts that apply to you. You end up either copying everything (and having no idea what half of it does) or nothing (because it's too overwhelming to pick through).

What bashrc.ui does differently

bashrc.ui breaks the config into discrete, named snippets — each one doing exactly one thing. Every snippet has a plain-English name, a short description of what it does, a concrete usage example, and the actual shell code it writes into your config.

The categories cover the full practical surface area of shell config:

Each snippet is tagged with the shell it supports (bash, zsh, or both). When you switch between shells at the top of the page, snippets that don't apply are visually dimmed.

The live preview panel

The right side of the UI is a live preview of your config file as you build it. Toggle a snippet on, and the code appears in the preview immediately. Toggle it off, and it disappears. The preview shows exactly what will be in your downloaded file — including section comments that group the snippets by category so the resulting config is readable rather than a wall of code.

The file header includes a timestamp and a reference back to moksha.agency/bashrc.ui, so if you come back to the config in two years you'll know where it came from and can regenerate an updated version.

#!/usr/bin/env zsh
# moksha.agency/bashrc.ui · 2026-10-12

# — History ——————————————————

# Huge history with deduplication
export HISTFILE=~/.zsh_history
export HISTSIZE=100000
export SAVEHIST=100000
setopt HIST_IGNORE_ALL_DUPS
setopt INC_APPEND_HISTORY

# — Navigation ——————————————

# Quick directory traversal
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

Essentials and the selection counter

Some snippets are marked as essential — the ones that almost every developer will want regardless of their workflow. Clicking the star icon at the top of the page toggles all essentials at once. It's a useful starting point: get the essentials in, then add anything specific to your stack on top.

The selection counter in the header shows how many snippets you have active out of the total available, along with a live count of the lines it represents. It's a small thing but it keeps the scope of what you're building visible — useful when you're building a minimal config versus a comprehensive one.

Mac vs Linux

Some shell behavior differs between macOS and Linux. The BSD ls on a Mac uses -G for color; GNU ls on Linux uses --color=auto. bashrc.ui accounts for this: when you select bash on macOS versus bash on Linux, the relevant snippets output the correct flags for the platform. The toggle in the header makes it explicit — Mac → zsh or Linux → bash — so you're always generating for the environment you'll actually use the file in.

Why we built it

We maintain a lot of machines across a lot of projects. New laptops, CI environments, remote servers, Docker containers — they all start with a bare shell. Having a generator we can open in 30 seconds and use to produce a solid starting config for any shell on any OS saves real time.

It also solves the onboarding problem. When someone new joins a project and asks "what aliases should I add?", the answer used to be "look at my dotfiles" or a long Slack message. Now the answer is "go to bashrc.ui, hit Essentials, add the Git section, download." Five minutes later they're productive with the same muscle memory as the rest of the team.

We built it for ourselves first, the same way we built hawk. When a tool is good enough that we use it every week, it gets polished and shipped.


Try it

bashrc.ui is free, open, and doesn't require an account. Go to moksha.agency/bashrc-ui, pick your shell, select what fits your workflow, and download. The whole process takes under two minutes.

If there's a snippet you'd use but it's missing, or something in the generated output that doesn't work right in your environment, the feedback matters. Building useful tools for developers is part of how we sharpen the skills we bring to every client project — so the iteration is real.

Build your shell config

60+ curated snippets. Pick what fits. Download in under a minute.

Open bashrc.ui →