# Ensure we're using at least version 2.05 if ! [ -n "$BASH_VERSINFO" ] ; then return elif ((10#${BASH_VERSINFO[0]%%[![:digit:]]*} == 2)) && \ ((10#${BASH_VERSINFO[1]%%[![:digit:]]*} < 5)) ; then return fi # Don't do anything if not running interactively if [[ $- != *i* ]] ; then return fi # Don't do anything if running a restricted shell if shopt -q restricted_shell ; 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 ' # Don't warn me about new mail unset -v MAILCHECK # Never beep at me setterm -bfreq -blength 2>/dev/null # Turn off flow control and control character echo stty -ixon -ctlecho 2>/dev/null # Don't let anyone write(1) to my terminal mesg n # 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 # Expand history commands on a new line for confirmation shopt -s histverify # 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 ((10#${BASH_VERSINFO[0]%%[![:digit:]]*} >= 4)) ; then # Autocorrect fudged paths during completion shopt -s dirspell # Enable double-starring paths shopt -s globstar # Warn me about stopped jobs when exiting; only if >=4.1 due to bug # if ((10#${BASH_VERSINFO[0]%%[![:digit:]]*} > 4)) || \ ((10#${BASH_VERSINFO[1]%%[![:digit:]]*} > 0)) ; then shopt -s checkjobs fi fi # Load any supplementary scripts if [[ -d $HOME/.bashrc.d ]] ; then for bashrc in "$HOME"/.bashrc.d/*.bash ; do source "$bashrc" done unset -v bashrc fi