X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/f617db13b0685c674817a6c7c1d148da3c07081f..852cd5fbddafbfed93df4cda8ba366b14922e95d:/bashrc diff --git a/bashrc b/bashrc index 6587800..4e941d1 100644 --- a/bashrc +++ b/bashrc @@ -1,3 +1,4 @@ +# -*-sh-*- # # $Id: .bashrc,v 1.6 1996/12/08 20:33:42 mdw Exp $ # @@ -20,7 +21,7 @@ if [ -t 0 ]; then PS2="> " PS4="+ " else - + case "$TERM" in linux*|screen*|xterm*|vt100*) bold='\[\]' unbold='\[\]' nl='\[ \]' ;; @@ -30,11 +31,20 @@ if [ -t 0 ]; then if (( EUID == 0 )); then left="«" right="»" - elif [ "$__mdw_tty" = "`tty`" ]; then - left="<" right=">" else - left="[" right="]" - export __mdw_tty="`tty`" + case $USER in + mdw|mwooding) + u="" left="[" right="]" + ;; + *) + u="\\u@" left="{" right="}" + ;; + esac + if [ "$__mdw_tty" = "`tty`" ]; then + left="<" right=">" + else + export __mdw_tty="`tty`" + fi fi if [ -z "$SSH_CLIENT" ] && @@ -43,7 +53,7 @@ if [ -t 0 ]; then sec_l='(' sec_r=')' fi - PS1="$nl$bold$left$sec_l\\h$sec_r \\w$right$unbold" + PS1="$nl$bold$left$sec_l$u\\h$sec_r \\w$right$unbold" PS2="$PS1 $bold>$unbold " fi @@ -76,7 +86,7 @@ shopt -u shift_verbose shopt -s sourcepath # --- Set the CDPATH --- -# +# # CDPATH=~/src:/usr/src:/usr/lib:/usr/share # dots=.. # i=6 @@ -105,53 +115,23 @@ ls () { fi } -# --- Setting xterm titles --- -# -# This doesn't work so well any more. :-( - -# if [ -e /usr/lib/bash/xtitle.so ]; then -# enable -f /usr/lib/bash/xtitle.so xtitle -# elif [ -e /usr/local/lib/xtitle.so ]; then -# enable -f /usr/local/lib/xtitle.so xtitle -# elif [ -e $HOME/lib/bash/xtitle.so ]; then -# enable -f $HOME/lib/bash/xtitle.so xtitle -# else -# xtitle () { return 1; } -# fi -xtitle () { return 1; } - -entitle () { - local t="`xtitle -q`" st - xtitle "$t $1" - shift - "$@"; st=$? - xtitle "$t" - return $st -} - # --- Set up some simple aliases --- alias cx='chmod a+x' alias which="command -v" alias ssync="rsync -e ssh" -alias rootly="entitle root become -g0 root" +alias rootly=$__MDW_ROOTLY alias r=rootly -alias eh="entitle 'Egham Hills 90210' tf eh" -alias news="entitle Usenet slrn" -alias splitvt='splitvt -t "`xtitle -q || echo xterm` splitvt"' +alias re="rootly $EDITOR" alias pstree="pstree -Ghl" alias cdtmp='cd ${TMPDIR-/tmp}' alias pushtmp='pushd ${TMPDIR-/tmp}' -alias e="sensible-editor" -alias svn=svnwrap - -@ () { - local t="`xtitle -q`" host="$1" - shift - xtitle "$t [$host]" - ssh "$host" "$@" - xtitle "$t" -} +alias e="$EDITOR" +alias svn="svnwrap svn" +alias @="ssh" + +[ -r /etc/bash_completion ] && . /etc/bash_completion +[ -r $HOME/.bash_completion ] && . $HOME/.bash_completion # --- Make `xt' start an xterm, maybe logging into a remote host --- @@ -198,6 +178,104 @@ core () { esac } +# --- Turning on and off path hacks --- + +path-add () { + local pathvar export dir val + case $# in + 1) pathvar=PATH dir=$1 export="export PATH";; + 2) pathvar=$1 dir=$2 export=:;; + *) echo >&2 "Usage: $0 [VAR] DIR";; + esac + eval "val=\$$pathvar" + case ":$val:" in + *:"$dir":*) ;; + *) val=$dir:$val ;; + esac + eval "$pathvar=\$val" + $export +} + +path-remove () { + local pathvar export dir val + case $# in + 1) pathvar=PATH dir=$1 export="export PATH";; + 2) pathvar=$1 dir=$2 export=:;; + *) echo >&2 "Usage: $0 [VAR] DIR";; + esac + eval "val=\$$pathvar" + case ":$val:" in + :"$dir":) val= ;; + :"$dir":*) val=${val#$dir:} ;; + *:"$dir":) val=${val%:$dir} ;; + *:"$dir":*) val=${val/:$dir:/:} ;; + esac + eval "$pathvar=\$val" + $export +} + +pathhack () { + if [ $# -eq 0 ]; then + local IFS=: + for e in $PATH; do + case "$e" in + "$HOME/bin/hacks/"*) + echo ${e#$HOME/bin/hacks/} + ;; + esac + done + return + fi + local force=nil + local path=$PATH + while [ $# -gt 0 ]; do + arg=$1 + case "$arg" in + -f | --force) + force=t + shift + continue + ;; + --) + shift + break + ;; + [-+]*) + ;; + *) + break + ;; + esac + hack=${arg#[+-]} + dir=$HOME/bin/hacks/$hack + [ -d "$dir" ] || { + echo "$0: path hack $hack not found" + return 1 + } + case "$arg,$force,:$PATH:" in + -*,*,*:"$dir":*) + path-remove path "$dir" + ;; + +*,t,*:"$dir":*) + path-remove path "$dir" + path-add path "$dir" + ;; + +*,nil,*:"$dir":*) + ;; + +*,*) + path-add path "$dir" + ;; + esac + shift + done + if [ $# -eq 0 ]; then + PATH=$path + export PATH + else + PATH=$path "$@" + fi +} + # --- Fix `man' under Slowaris --- case "$MACHTYPE" in @@ -223,4 +301,6 @@ if (( UID == 0 )); then set -o noclobber fi +[ -f "$HOME/.bashrc-local" ] && . "$HOME/.bashrc-local" + fi