My Bash and Zsh configuration files
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


cfg.msh is a clean configuration set for Bash or Zsh. This work is highly inspired by Oh-My-Zsh features and design, but I chose to write my configuration from scratch as an excercice, and in order to be focused on my own needs and avoid some bogus features with some terminals (and SSH).

I will try to implement features that are compatible with Bash and Zsh as much as possible.

A quick word about the name "msh", M stands for My, Multiple and Martius (a bit of Megalomania, hum?).


There is a script called setup that you can run, I shall do the job for you.

If you don't want to use that script, you can follow these steps :

  • move or copy the content of cfg.msh where you want to install the scripts

  • execute git submodule init

  • copy cfg.msh/mshrc to ~/.zshrc or ~/.bashrc according to the shell program you want to use

  • Edit the new .zshrc/.bashrc file and update the installation path: $MSH_CFG_PATH

  • If you want to use Zsh, don't forget to choose zsh as your default shell program using: chsh -s `which zsh`

That's should be sufficient.


You should read the configuration files which are extensively documented. You must be interested in keybindings if you want to know actions implemented behind some keys.

  • bootstrap sources the scripts in scripts/

  • scripts/*.msh script are loaded first, then, according to the shell running the script, it calls scripts/*.bash or scripts/*.zsh

  • scripts/aliases contains common aliases

  • scripts/complete autocompletion features

  • scripts/env environement specific features (shell options, etc)

  • scripts/git git helpers

  • scripts/keybindings key bindings (for zsh)

  • scripts/view display setup (prompt, etc)

The shell detection feature (shellname alias) seems to be working under Gnu/Linux only, since it uses specific options. You can set yourself MSH_SHELL='bash' or MSH_SHELL='zsh' in mshrc.

To do

Most important additions are on top.

  1. Find a way to hide these ugly characters when I split terminator and the last line displayed will be cut.

  2. Customize autocompletion style

  3. Since I use mostly Zsh, my configuration for bash is currently basic, but I'll try to improve it soon.

  4. The setup script, with an optional minifier allowing to use only one .*rc file.

  5. Oh-My-Zsh plugins autograbber (hum...)


Martin Richard