| 1 | ### -*-bash-*- |
| 2 | ### |
| 3 | ### Bash session things. |
| 4 | |
| 5 | __mdw_shell=bash |
| 6 | |
| 7 | ## Only do this if we haven't done it before. (Note that this guard isn't |
| 8 | ## exported, so subshells will need to make their own arrangements.) |
| 9 | case ${__mdw_bashrc+t} in |
| 10 | t) ;; |
| 11 | *) __mdw_bashrc=t |
| 12 | |
| 13 | ## Fetch the common configuration. |
| 14 | . "$HOME/.shell-rc" |
| 15 | |
| 16 | ## If we've not run the main profile yet, we should do that first. It sets |
| 17 | ## up things we rely on. Also, if there's a system script, we should run |
| 18 | ## that too. |
| 19 | case ${__mdw_profile+t} in t) ;; *) . "$HOME/.profile" ;; esac |
| 20 | __mdw_source_if_exists /etc/bashrc |
| 21 | |
| 22 | ## Completion. |
| 23 | __mdw_source_if_exists /etc/bash_completion "$HOME/.bash_completion" |
| 24 | |
| 25 | ###-------------------------------------------------------------------------- |
| 26 | ### Prompt hacking. |
| 27 | |
| 28 | __mdw_set_prompt_hacks () { |
| 29 | case "$TERM" in |
| 30 | linux*|screen*|xterm*|vt100*|eterm*) |
| 31 | case "$(tput bold)" in |
| 32 | "") bold="\[$(tput md)\]" unbold="\[$(tput me)\]" ;; |
| 33 | *) bold="\[$(tput bold)\]" unbold="\[$(tput sgr0)\]" ;; |
| 34 | esac |
| 35 | gitcolour="\[$(tput setaf 6)\]" |
| 36 | rccolour="\[$(tput setaf 1)\]" |
| 37 | uncolour="\[$(tput op)\]" |
| 38 | nl="\[\r\]" |
| 39 | ;; |
| 40 | esac |
| 41 | host='\h' dir=' \w' |
| 42 | } |
| 43 | |
| 44 | __mdw_before_cmd_hack () { |
| 45 | set -- $(history 1); shift |
| 46 | __mdw_preexec "$*" |
| 47 | } |
| 48 | |
| 49 | ## Only bother if the shell is interactive. |
| 50 | if [ -t 0 ]; then |
| 51 | PROMPT_DIRTRIM=5 |
| 52 | __mdw_source_if_exists /usr/lib/git-core/git-sh-prompt |
| 53 | __mdw_set_prompt_pieces |
| 54 | PROMPT_COMMAND=__mdw_precmd |
| 55 | PS0="\$(__mdw_before_cmd_hack)" |
| 56 | fi |
| 57 | |
| 58 | ###-------------------------------------------------------------------------- |
| 59 | ### Other shell tweaking. |
| 60 | |
| 61 | ## Random shell tweaks. |
| 62 | notify=1 |
| 63 | set -b |
| 64 | shopt -u cdable_vars |
| 65 | shopt -s cdspell |
| 66 | shopt -s checkhash |
| 67 | shopt -s checkwinsize |
| 68 | shopt -s cmdhist |
| 69 | shopt -u dotglob |
| 70 | shopt -s expand_aliases |
| 71 | shopt -s extglob |
| 72 | if (( ${BASH_VERSINFO[0]} >= 4 )); then shopt -s globstar; fi |
| 73 | shopt -s gnu_errfmt |
| 74 | shopt -s histappend |
| 75 | set -o histexpand |
| 76 | shopt -s histreedit |
| 77 | shopt -u histverify |
| 78 | shopt -s hostcomplete |
| 79 | shopt -s huponexit |
| 80 | shopt -s interactive_comments |
| 81 | shopt -s lithist |
| 82 | shopt -u mailwarn |
| 83 | shopt -u nocaseglob |
| 84 | shopt -u nullglob |
| 85 | shopt -s promptvars |
| 86 | shopt -u shift_verbose |
| 87 | shopt -s sourcepath |
| 88 | HISTCONTROL=ignorespace:erasedups |
| 89 | |
| 90 | ###-------------------------------------------------------------------------- |
| 91 | ### Finishing touches. |
| 92 | |
| 93 | ## Run any local hooks. |
| 94 | __mdw_source_if_exists "$HOME/.bashrc-local" |
| 95 | |
| 96 | ###----- That's all, folks -------------------------------------------------- |
| 97 | |
| 98 | esac |