# Give up completely if no BASH_VERSINFO (<2.0) if ! [ "$BASH_VERSINFO" ] ; then return fi # Don't do anything if not running interactively if [[ $- != *i* ]] ; then return fi # Keep around a million lines of history in file HISTFILESIZE=$((2 ** 20)) # Keep around a thousand lines of history in memory HISTSIZE=$((2 ** 10)) # Ignore duplicate commands and whitespace in history HISTCONTROL=ignoreboth # Keep the times of the commands in history HISTTIMEFORMAT='%F %T ' # Only tell me about new mail if MAIL is set and in $HOME if [[ $MAIL == "$HOME"/* ]] ; then MAILCHECK=15 else unset -v MAILCHECK fi # Never beep at me setterm -bfreq 0 2>/dev/null # Turn off flow control and control character echo stty -ixon -ctlecho 2>/dev/null # Autocorrect fudged paths in cd calls shopt -s cdspell # Update the hash table properly shopt -s checkhash # Update columns and rows if window size changes shopt -s checkwinsize # Put multi-line commands onto one line of history shopt -s cmdhist # Include dotfiles in pattern matching shopt -s dotglob # Enable advanced pattern matching shopt -s extglob # Append rather than overwrite Bash history shopt -s histappend # Don't use Bash's builtin host completion shopt -u hostcomplete # Don't warn me about new mail all the time shopt -u mailwarn # Ignore me if I try to complete an empty line shopt -s no_empty_cmd_completion # Use programmable completion, if available shopt -s progcomp # Warn me if I try to shift when there's nothing there shopt -s shift_verbose # Don't use PATH to find files to source shopt -u sourcepath # These options only exist since Bash 4.0-alpha if ((BASH_VERSINFO[0] >= 4)) ; then # Warn me about stopped jobs when exiting shopt -s checkjobs # Autocorrect fudged paths during completion shopt -s dirspell # Enable double-starring paths shopt -s globstar fi # Load any supplementary scripts if [[ -d $HOME/.bashrc.d ]] ; then for config in "$HOME"/.bashrc.d/*.bash ; do if [[ -r $config ]] ; then source "$config" fi done fi unset -v config