Created
May 16, 2018 20:42
-
-
Save zeromancer/f8d25af40f4a8149ba6dd891646cbf2a to your computer and use it in GitHub Desktop.
Bash options
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Sensible Bash - An attempt at saner Bash defaults | |
# Maintainer: mrzool <http://mrzool.cc> | |
# Repository: https://github.com/mrzool/bash-sensible | |
# Version: 0.2.1 | |
## GENERAL OPTIONS ## | |
# Prevent file overwrite on stdout redirection | |
# Use `>|` to force redirection to an existing file | |
set -o noclobber | |
# Update window size after every command | |
shopt -s checkwinsize | |
# Automatically trim long paths in the prompt (requires Bash 4.x) | |
PROMPT_DIRTRIM=2 | |
# Enable history expansion with space | |
# E.g. typing !!<space> will replace the !! with your last command | |
bind Space:magic-space | |
# Turn on recursive globbing (enables ** to recurse all directories) | |
shopt -s globstar 2>/dev/null | |
## SMARTER TAB-COMPLETION (Readline bindings) ## | |
# Perform file completion in a case insensitive fashion | |
bind "set completion-ignore-case on" | |
# Treat hyphens and underscores as equivalent | |
bind "set completion-map-case on" | |
# Display matches for ambiguous patterns at first tab press | |
bind "set show-all-if-ambiguous on" | |
## SANE HISTORY DEFAULTS ## | |
# Append to the history file, don't overwrite it | |
shopt -s histappend | |
# Save multi-line commands as one command | |
shopt -s cmdhist | |
# Record each line as it gets issued | |
PROMPT_COMMAND='history -a' | |
# Huge history. Doesn't appear to slow things down, so why not? | |
HISTSIZE=500000 | |
HISTFILESIZE=100000 | |
# Avoid duplicate entries | |
HISTCONTROL="erasedups:ignoreboth" | |
# Don't record some commands | |
export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear" | |
# Useful timestamp format | |
HISTTIMEFORMAT='%F %T ' | |
# Enable incremental history search with up/down arrows (also Readline goodness) | |
# Learn more about this here: http://codeinthehole.com/writing/the-most-important-command-line-tip-incremental-history-searching-with-inputrc/ | |
bind '"\e[A": history-search-backward' | |
bind '"\e[B": history-search-forward' | |
bind '"\e[C": forward-char' | |
bind '"\e[D": backward-char' | |
## BETTER DIRECTORY NAVIGATION ## | |
# Prepend cd to directory names automatically | |
shopt -s autocd 2>/dev/null | |
# Correct spelling errors during tab-completion | |
shopt -s dirspell 2>/dev/null | |
# Correct spelling errors in arguments supplied to cd | |
shopt -s cdspell 2>/dev/null | |
# This defines where cd looks for targets | |
# Add the directories you want to have fast access to, separated by colon | |
# Ex: CDPATH=".:~:~/projects" will look for targets in the current working directory, in home and in the ~/projects folder | |
CDPATH="." | |
# This allows you to bookmark your favorite places across the file system | |
# Define a variable containing a path and you will be able to cd into it regardless of the directory you're in | |
shopt -s cdable_vars | |
# Examples: | |
# export dotfiles="$HOME/dotfiles" | |
# export projects="$HOME/projects" | |
# export documents="$HOME/Documents" | |
# export dropbox="$HOME/Dropbox" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment