Skip to content

basicsbeauty/bash-sensible

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 

Repository files navigation

Sensible Bash

An attempt at saner Bash defaults. Inspired by Tim Pope's sensible.vim.

The config

Sensible Bash is intended to be a simple starting point for a better Bash experience out of the box. Refer to source for a complete list of all the options. Here's a taste of what's in the configuration:

1. Smarter tab completion

Options to improve on Bash's default tab completion. These settings get Bash to:

  • Perform file completion in a case insensitive fashion;
  • Treat hyphens and underscores as equivalent;
  • Display matches for ambiguous patterns at the first press of the tab key (instead of requiring two tab-presses).

2. Sane history defaults

Some tweakings to the command history, mostly taken from Tom Ryder's article Better Bash History. These options will get Bash to:

  • Append to the history file instead of overwriting it;
  • Save multi-line commands as one command;
  • Record each line as it gets issued;
  • Keep track of a bigger history;
  • Avoid duplicate entries;
  • Avoid recording unneeded commands (exit, ls, bg, fg, and history itself);
  • Make use of a timestamp format that is actually useful.

3. Better directory navigation

Options to make file system navigation blazingly fast:

  • Prepend cd to directory names automatically, so you can cd into directories just by typing their name;
  • Automatically correct spelling errors during tab-completion;
  • Automatically correct spelling errors in arguments supplied to cd;
  • CDPATH defines where cd will look for targets—the default is the current working directory, but you can add directories you want to have fast access to (ex: projects, repos, documents...)
  • cdable_vars allows you to define paths as variables and cd into it from wherever you are in the file system, kind of like a bookmarking system for Bash.

Usage

You can copy sensible.bash in your bashrc, cherry-pick the options you like most, or source the file at the top of your bashrc:

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

Note: Make sure you're running at least Bash 4.x or some options may not work. Keep your software up-to-date!

Note for OS X users

If you're using OS X, I recommend to follow Josh Staiger's advice and source bashrc from bash_profile so to keep all your configuration in one place.

Contributing

Consider this as a work in progress where everything is open for discussion. Feel free to open an issue or submit a pull request if you think I've missed something important. Same goes for options you think should be removed.

See also

License

MIT

About

An attempt at saner Bash defaults

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%