diff --git a/sdk_container/src/third_party/coreos-overlay/app-shells/bash/bash-4.3_p46.ebuild b/sdk_container/src/third_party/coreos-overlay/app-shells/bash/bash-4.3_p46-r1.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/app-shells/bash/bash-4.3_p46.ebuild rename to sdk_container/src/third_party/coreos-overlay/app-shells/bash/bash-4.3_p46-r1.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/bashrc b/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/bashrc index a398eb1ed4..6db6966819 100644 --- a/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/bashrc +++ b/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/bashrc @@ -20,54 +20,75 @@ fi # http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11) shopt -s checkwinsize -# Enable history appending instead of overwriting. #139609 +# Disable completion when the input buffer is empty. i.e. Hitting tab +# and waiting a long time for bash to expand all of $PATH. +shopt -s no_empty_cmd_completion + +# Enable history appending instead of overwriting when exiting. #139609 shopt -s histappend +# Save each command to the history file as it's executed. #517342 +# This does mean sessions get interleaved when reading later on, but this +# way the history is always up to date. History is not synced across live +# sessions though; that is what `history -n` does. +# Disabled by default due to concerns related to system recovery when $HOME +# is under duress, or lives somewhere flaky (like NFS). Constantly syncing +# the history will halt the shell prompt until it's finished. +#PROMPT_COMMAND='history -a' + # Change the window title of X terminals case ${TERM} in - xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*) - PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"' + [aEkx]term*|rxvt*|gnome*|konsole*|interix) + PS1='\[\033]0;\u@\h:\w\007\]' ;; screen*) - PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\\"' + PS1='\[\033k\u@\h:\w\033\\\]' + ;; + *) + unset PS1 ;; esac -use_color=false -#BSD#@# BSD doesn't typically come with dircolors so we need -#BSD#@# to hardcode some terminals in here. -#BSD#@case ${TERM} in -#BSD#@ xterm*|rxvt*|Eterm|aterm|kterm|gnome*|screen|cons25) use_color=true;; -#BSD#@esac - # Set colorful PS1 only on colorful terminals. # dircolors --print-database uses its own built-in database # instead of using /etc/DIR_COLORS. Try to use the external file -# first to take advantage of user additions. Use internal bash -# globbing instead of external grep binary. -safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM -match_lhs="" -[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)" -[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(/dev/null \ - && match_lhs=$(dircolors --print-database) -[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true +# first to take advantage of user additions. +# We run dircolors directly due to its changes in file syntax and +# terminal name patching. +use_color=false +if type -P dircolors >/dev/null ; then + # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 + LS_COLORS= + if [[ -f ~/.dir_colors ]] ; then + eval "$(dircolors -b ~/.dir_colors)" + elif [[ -f /etc/DIR_COLORS ]] ; then + eval "$(dircolors -b /etc/DIR_COLORS)" + else + eval "$(dircolors -b)" + fi + # Note: We always evaluate the LS_COLORS setting even when it's the + # default. If it isn't set, then `ls` will only colorize by default + # based on file attributes and ignore extensions (even the compiled + # in defaults of dircolors). #583814 + if [[ -n ${LS_COLORS:+set} ]] ; then + use_color=true + else + # Delete it if it's empty as it's useless in that case. + unset LS_COLORS + fi +else + # Some systems (e.g. BSD & embedded) don't typically come with + # dircolors so we need to hardcode some terminals in here. + case ${TERM} in + [aEkx]term*|rxvt*|gnome*|konsole*|screen|cons25|*color) use_color=true;; + esac +fi if ${use_color} ; then - # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 - if type -P dircolors >/dev/null ; then - if [[ -f ~/.dir_colors ]] ; then - eval $(dircolors -b ~/.dir_colors) - elif [[ -f /etc/DIR_COLORS ]] ; then - eval $(dircolors -b /etc/DIR_COLORS) - fi - fi - if [[ ${EUID} == 0 ]] ; then - PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] ' + PS1+='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] ' else - PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' + PS1+='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' fi #BSD#@export CLICOLOR=1 @@ -78,11 +99,15 @@ if ${use_color} ; then else if [[ ${EUID} == 0 ]] ; then # show root@ when we don't have colors - PS1='\u@\h \W \$ ' + PS1+='\u@\h \W \$ ' else - PS1='\u@\h \w \$ ' + PS1+='\u@\h \w \$ ' fi fi +for sh in /etc/bash/bashrc.d/* ; do + [[ -r ${sh} ]] && source "${sh}" +done + # Try to keep environment pollution down, EPA loves us. -unset use_color safe_term match_lhs +unset use_color sh diff --git a/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/dot-bash_profile b/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/dot-bash_profile index 94a6622b5c..1de05a45e3 100644 --- a/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/dot-bash_profile +++ b/sdk_container/src/third_party/coreos-overlay/app-shells/bash/files/dot-bash_profile @@ -2,4 +2,6 @@ # This file is sourced by bash for login shells. The following line # runs your .bashrc and is recommended by the bash info pages. -[[ -f ~/.bashrc ]] && . ~/.bashrc +if [[ -f ~/.bashrc ]] ; then + . ~/.bashrc +fi