CLI tool
ohmybash/oh-my-bash avatar
ohmybash/oh-my-bash

Oh My Bash: a bashrc framework with plugins, themes and an auto-update tool

A delightful community-driven framework for managing your bash configuration, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.

7,721 stars785 forksShellMIT

At a glance

What is it?
Oh My Bash manages your bash configuration through plugins and themes, and installs by replacing ~/.bashrc with a backup of the original. It is aimed at bash users who want oh-my-zsh style conveniences without switching shells.
Who is it for?
Adopt Oh My Bash if you already live in bash and want plugin loading and prompt themes without changing shells. Skip it if you need Windows support, since the README states it works best on macOS and Linux, or if you cannot accept the installer replacing ~/.bashrc.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 27 days ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Oh My Bash actually manages

A bash user's configuration drifts. Aliases accumulate in one file, completions in another, prompt tweaks in a third, and nothing tracks which of them still work. Oh My Bash packages that drift into a framework: a repository of plugins, themes, aliases, completions and library code under a single install directory, plus a startup file that loads the pieces you select. The README frames it as "an open source, community-driven framework for managing your bash configuration."

The audience is narrow and specific. People who use zsh already have oh-my-zsh and similar tools; Oh My Bash targets the ones who stay on bash, either because it is the default login shell on their servers, because their scripts assume it, or because they do not want to change shells on machines they do not fully control. The prerequisites are modest: a Unix-like operating system (macOS or Linux), curl or wget, and git. The README adds a disclaimer that it works best on macOS and Linux, which is the first hint about where it does not belong.

How plugins, themes and the OSH_THEME variable fit together

The mechanism is plain bash sourcing. The installer replaces ~/.bashrc with a version provided by Oh My Bash, and that file defines a plugins array and an OSH_THEME variable. At shell startup, the framework reads those values and sources the matching directories from the install location. The repository layout reflects this: plugins/, themes/, aliases/, completions/ and lib/ sit at the top level, with oh-my-bash.sh as the entry point and templates/ holding the bashrc that gets copied into place.

Plugin selection is an array assignment. The README shows a line like plugins=(git bundler osx rake ruby) and notes that most plugins ship their own README documenting usage, though it admits that is a work in progress ("should! we're working on that"). Conditional loading is possible by appending to the array, for example enabling tmux-autoattach only when $SSH_TTY is set. That conditional pattern is the most useful part of the design for anyone managing both local and remote shells with one dotfile.

Themes are chosen through the OSH_THEME variable, with "font" as the default. The README is honest that font "is not the fanciest one. It's not the simplest one. It's just the right one for the original maintainer." Over one hundred themes are bundled, and some, such as agnoster, need a Powerline font installed on the terminal host. Random selection is supported through OSH_THEME="random", with OMB_THEME_RANDOM_CANDIDATES and OMB_THEME_RANDOM_IGNORED controlling the pool, and the chosen name readable from $OMB_THEME_RANDOM_SELECTED.

Installing Oh My Bash and switching a theme

The documented install path is a one-line script fetched over curl or wget. It backs up your existing ~/.bashrc to ~/.bashrc.omb-TIMESTAMP before replacing it, and creates ~/.bash_profile only if that file does not already exist. Run it in a terminal and a new shell session should pick up the framework.

bash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

The wget form is equivalent if curl is unavailable.

bash
bash -c "$(wget https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh -O -)"

If ~/.bash_profile already existed, the README warns that it must source ~/.bashrc, otherwise the framework never loads in login shells. The fix it gives is a conditional block.

bash
if [[ -f ~/.bashrc ]]; then
  source ~/.bashrc
fi

For a first real change, edit ~/.bashrc and set the theme variable to one of the bundled themes, then open a new terminal window.

shell
OSH_THEME="agnoster" # (this is one of the fancy ones)

The README notes that agnoster may require a Powerline font on the console host. To check which theme random selection picked, echo the variable.

shell
$ echo "$OMB_THEME_RANDOM_SELECTED"

Automated installs can pass --unattended to avoid changing the default shell and to skip launching bash at the end. A system-wide install uses --prefix, for example --prefix=/usr/local, after which each user copies PREFIX/share/oh-my-bash/bashrc to ~/.bashrc manually. Manual installation starts with cloning the repository to ~/.oh-my-bash.

The installer rewrites your bashrc, and that is the main risk

The basic install does not merge anything. It replaces ~/.bashrc with Oh My Bash's version and leaves your old file as ~/.bashrc.omb-TIMESTAMP. If your bashrc contained hand-written environment exports, work-specific functions or sourcing of secrets, they stop running until you copy them into the new file. The backup exists, but nothing in the README describes an automated merge, and there is no documented rollback command. Restoring means moving the backup back yourself.

The ~/.bash_profile interaction is the second trap. If that file already exists and does not source ~/.bashrc, the framework appears installed but does nothing in login shells, which is exactly the case on many macOS setups. The README calls this out with a warning and a three-line fix, but it is a manual step.

There is also a platform boundary. The README says Oh My Bash works best on macOS and Linux, and the prerequisites list a Unix-like system. Nothing in the README describes Windows support, so anyone on Windows should treat this as unsupported rather than something to work around. Finally, the README does not document an uninstall procedure, so plan on removing the directory and restoring your backed-up bashrc by hand if you change your mind.

How Oh My Bash differs from Starship and oh-my-zsh

The closest prompt-focused alternative is Starship, a cross-shell prompt. The difference is scope and mechanism: Starship is a single binary that renders a prompt in bash, zsh, fish and others, configured through a TOML file, and it does not replace your ~/.bashrc or manage aliases and completions. Oh My Bash is the opposite shape. It is bash-only, it takes over the startup file, and its value comes from the bundled plugins, aliases and completions alongside the prompt. If all you want is a prompt, Starship asks less of your configuration. If you want plugin loading and a large theme catalogue inside bash, Oh My Bash is the closer fit. The other reference point is oh-my-zsh, which solves the same problem for a different shell; the README itself links to the oh-my-zsh theme wiki for screenshots, which says something about the shared lineage. Choosing between them is really choosing between bash and zsh, not between two frameworks.

Maintenance, updates and the MIT licence

The repository is not archived, and the last push was on 2026-09-02, so the project is being touched. The description mentions an auto-update tool for keeping up with community changes, though the README excerpt does not spell out the update command, so check the tools/ directory before relying on it. Upgrade cost is mostly the same risk as installation: because the framework owns ~/.bashrc, a change in the shipped template can collide with local edits you made to that file. Keeping personal configuration in a separate sourced file reduces that friction.

The project is MIT licensed. In practical terms that permits use, modification and redistribution with the licence text retained, but it is not legal advice, and anyone embedding the framework in a distributed product should read LICENSE.md themselves. The bundled themes and plugins are community contributions under the same repository, so attribution requirements travel with the code you copy.

Editorial conclusion

Adopt Oh My Bash if you already live in bash and want plugin loading and prompt themes without changing shells. Skip it if you need Windows support, since the README states it works best on macOS and Linux, or if you cannot accept the installer replacing ~/.bashrc. Before installing, confirm your ~/.bash_profile sources ~/.bashrc and check what is in your current ~/.bashrc, because the installer moves it to ~/.bashrc.omb-TIMESTAMP.

Frequently asked questions

How do I install Oh My Bash?

Run the install script through curl or wget, for example bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)". It replaces ~/.bashrc and backs the original up as ~/.bashrc.omb-TIMESTAMP.

Is Oh My Bash or Oh My Zsh better?

They target different shells: Oh My Bash manages bash configuration while oh-my-zsh is for zsh, so the choice follows your shell rather than the framework. The Oh My Bash README even links to the oh-my-zsh theme wiki for theme screenshots.

What is an alternative to oh-my-zsh for bash?

Oh My Bash is exactly that: a community-driven framework for managing bash configuration with plugins and themes. Starship is a different kind of alternative, a cross-shell prompt that does not take over your ~/.bashrc or manage plugins.

Does Oh My Bash work on Windows?

The README states it works best on macOS and Linux and lists a Unix-like operating system as a prerequisite. No Windows support is documented.

Can I install Oh My Bash on Ubuntu?

The README does not list per-distribution instructions; it gives one install script for Unix-like systems, which covers Linux including Ubuntu. The prerequisites are curl or wget and git.

What is Oh My Bash?

It is an open source, community-driven framework for managing your bash configuration, with bundled plugins and over one hundred themes. The README describes it as managing your bash configuration and keeping up with community updates.

Official sources

  1. Issues
  2. License: MIT
  3. ohmybash/oh-my-bash on GitHub
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ohmybash-oh-my-bash.svg)](https://hysenlabs.com/projects/ohmybash-oh-my-bash)