# -*- mode: Shell-script; -*- # Emacs Variables # To use on a new system. # Copy this file to the home directory and touch # for bash only+ # .bashrc_auto_update in the home direcotry # for everything # .bashrc_auto_update_all in the home direcotry # # if [ -z "$BASH_VERSION" ] then echo "ERROR: Need bash for this bashrc" exit 1 fi waits="" # Log to ~/.bashrc_log exec 3>~/.bashrc_log # Load basic path encase not yet loaded export PATH=$PATH:/bin/:/usr/bin/ # Define FLASE and TRUE for some reason this is needed for linux login # on carllapbrown function FALSE (){ return 1 } function TRUE (){ return 0 } # Where can ET phone home? export ET=joslinfamily.co.uk if [ -e $HOME/.hushlogin ] then export HUSHLOGIN=true fi # Hushlogin not set make false if [ -z "$HUSHLOGIN" ] then export HUSHLOGIN=false fi ######################################################################## ### Functions ######################################################################## function log { date "+%s.%N" >&3 echo "$@" >&3 } function daysup { echo $(( $(cut -d'.' -f 1 <<< $(cat /proc/uptime | cut -d' ' -f 1)) / $((24*60*60)) )) } function ruler { count=$1;shift i=1 if [[ $count -gt 999 ]] then echo "ruler does not work well above 999" >&2 fi if [[ $count -gt $COLUMNS ]] then echo "ruler does not work when wider than \$COLUMNS" >&2 fi while [[ $(($(($i))*10)) -le $count ]] do if [[ $i -lt 10 ]] then echo -n " " fi echo -n " " echo -n "$i" i=$(($i+1)) done echo i=1 while [[ $count -gt 0 ]] do echo -n $i i=$(($i+1)) count=$((count-1)) if [[ 9 -lt $i ]] then i=0 fi done echo } function message { if [ ! -z "$DISPLAY" ] then if prog=`which xmessage 2>&3` then $prog $@ fi fi echo $@ } ######################################################################## ### Bashrc Functions ######################################################################## # dirlist takes an environment variable that stores a : seperated list # of dirs and a list of new dirs to add if the dir exists. After the # createion of the new list duplicates are removed. function dirlist { local env=$1;shift local env_cpy=${!env} local old_env=${env_cpy//:/ } log start dirlist $env $@ $old_env >&3 export $env= for i in $@ $old_env do i=$i/ # Add '/' to end encase it is not present i=${i//+(\/)/\/} if [[ ! ":${!env}:" =~ ":$i:" ]] then if [ -d ${i##*(\!)} ] then export $env=${!env}:$i fi fi done if [ "${!env:0:1}" == ":" ] then export $env=${!env:1} elif [ -z $env ] then export -n $env else export $env fi log end dirlist $env } function mkexe { local file=$1;shift chmod +x $HOME/$file 2>&3 } function terminalexist { local term=$1;shift local t=${term:0:1} # Do not look for double color [ "${term:(-18)}" == "-256color-256color" ] && return 1 [ -e /usr/share/terminfo/$t/$term ] && return 0 [ -e /usr/lib/terminfo/$t/$term ] && return 0 [ -e /usr/share/lib/terminfo/$t/$term ] && return 0 [ -e /lib/terminfo/$t/$term ] && return 0 # Can not find terminfo file are selves let tput try tput -T $term longname >&3 2>&3 && return 0 return 1 } # use own which to reduce overhead of starting new program function which { local i local IFS=: for i in $PATH do i=$i/$1 i=${i//+(\/)/\/} if [ -x "$i" ] then echo $i return 0 fi done return 1 } function updateFiles { if prog=`which wget` then urls="" for i in "$@" do urls="$urls http://${ET}/~carl/config/$i" done # Do not redirect as can cause problems with open access points. $prog --timestamping --force-directories --no-host-directories \ --tries=1 --max-redirect=0 --cut-dirs=2 \ $urls --directory-prefix=$HOME &>~/.bashrc_update_wget_log elif prog=`which curl` then mv .bashrc_update_curl_log{,.old} for i in "$@" do dir=$HOME/`dirname $i` file=`basename $i` url="$urls http://${ET}/~carl/config/$i" mkdir -p $dir ( cd $dir $prog --time-cond $file --remote-time --remote-name \ --max-redirs 0 \ $url --output $file --silent ) >>.bashrc_update_curl_log 2>&1 done else echo "ERROR No known http get program found" >&2 fi } # cheaper version of cmp function mycmp { local f1=`<$1` local f2=`<$2` return [ "$f1" = "$f2" ] } ######################################################################## ### Auto update ######################################################################## if [ -O $HOME/.bashrc ] && [ -O $HOME/.bashrc_auto_update ] && [ ! -z "$PS1" ] && [ -z "$BASHRC_UPDATE" ] then export BASHRC_UPDATE=true if [ -O $HOME/.bashrc_auto_update_all ] then export BASHRC_UPDATE_ALL=true $HUSHLOGIN || echo "Updating all ...." >&2 ( ( flock --exclusive 3 2>&3 updateFiles \ .backgroundgray.png \ .tux.png \ .bashrc \ .face \ .face.png \ .face32.png \ .face64.png \ .face128.png \ .face256.png \ .facebig.png \ .conkyrc \ .pythoncalc.py \ bin/termemacs \ bin/findandrun \ bin/findandprint \ bin/terminal \ bin/load \ bin/sshload \ bin/mumrapidresize \ bin/convertHTML5 \ bin/mummp3 \ bin/vncx \ bin/screenshot \ bin/xlock-wrapper \ bin/xscreensaver-kill-gnome \ bin/sun \ bin/unpack \ bin/scanpdf \ bin/resizepdf \ bin/battery \ bin/scratch \ bin/termorgui \ bin/emacs-wrapper \ bin/cctv \ bin/wacomOne \ bin/zoomAltUser \ .config/gtk-3.0/settings.ini \ .config/awesome/rc.lua \ .config/awesome/keydoc.lua \ .config/awesome/sharetags.lua \ .config/awesome/theme.lua \ .config/conky/conky.conf \ .config/htop/htoprc \ .xkb/symbols/local \ .xkb/types/local \ .xkb/keymap/local \ .emacs \ .gtkrc-2.0 \ .inputrc \ .subversion/config \ .xmonad/xmonad.hs \ .xmobarrc \ .Xresources \ .xinit \ .xsession \ .xsessionrc \ .xscreensaver \ .XCompose \ .gitconfig \ .bash_profile \ .profile if [ ! -z "$DISPLAY" ] then if prog=`which xrdb 2>&3` then xrdb -merge .Xresources >&3 2>&3 & fi fi mkexe bin/termemacs mkexe bin/findandrun mkexe bin/findandprint mkexe bin/terminal mkexe bin/load mkexe bin/sshload mkexe bin/mumrapidresize mkexe bin/convertHTML5 mkexe bin/mummp3 mkexe bin/vncx mkexe bin/xlock-wrapper mkexe bin/xscreensaver-kill-gnome mkexe bin/sun mkexe bin/unpack mkexe bin/scanpdf mkexe bin/resizepdf mkexe bin/screenshot mkexe bin/battery mkexe bin/scratch mkexe bin/termorgui mkexe bin/emacs-wrapper mkexe bin/cctv mkexe bin/wacomOne mkexe bin/zoomAltUser mkexe .xsession #if prog=`which git` #then # (cd .config/awesome; # $prog clone git://git.mercenariesguild.net/obvious.git) #else # echo "Can not find git not updating awesome/obvious" >&3 #fi ) 3>$HOME/.bashrc_auto_update_lock & ) else $HUSHLOGIN || echo "Updating .bashrc ...." >&2 ( ( flock --exclusive 3 updateFiles .bashrc ) 3>$HOME/.bashrc_auto_update_lock & ) fi fi ######################################################################## ### Wrap us in an ssh-agent if it is installed ######################################################################## # Do Wraping just after autoupdate to save extra work # Only self wrap if interactive else this may stop what we are running working if [ ! -z "$PS1" ] && [ ! -z "$BASH" ] && ( [ ! -e $SSH_AUTH_SOCK ] || [ -z $SSH_AUTH_SOCK ] ) && prog=`which ssh-agent` && ( ! $HUSHLOGIN ) then # Interactive but no ssh-agent :( exec $prog $BASH fi ######################################################################## ### Load local config if it exists ######################################################################## if [ -f ${HOME}/.bashrclocal ] then echo "Loading local config" . ${HOME}/.bashrclocal fi ######################################################################## ### Something to look at while loading everything ######################################################################## if [ ! -z "$PS1" ] && ! $HUSHLOGIN then ( dir= if [ -d /usr/share/games/fortunes/ ] then dir=/usr/share/games/fortunes/ fi if prog=`which fortune 2>&3` then $prog -su $dir fi )& waits="$waits $!" fi ######################################################################## ### Do an ls to cache home stick in background so we do not block ######################################################################## if prog=`which ls 2>&3` then (($prog >/dev/null 2>/dev/null )&) fi ######################################################################## ### Set bash options ######################################################################## # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s cdspell checkhash checkwinsize cmdhist dirspell \ expand_aliases extglob extquote globstar gnu_errfmt histappend \ histverify hostcomplete interactive_comments lithist \ no_empty_cmd_completion nocaseglob progcomp promptvars sourcepath >&3 2>&3 shopt -u mailwarn >&3 2>&3 set -o braceexpand \ -o emacs \ +o errexit \ +o errtrace \ +o functrace \ -o hashall \ +o ignoreeof \ -o interactive-comments \ +o keyword \ +o monitor \ +o noclobber \ +o noexec \ +o noglob \ +o nolog \ +o notify \ +o nounset \ +o onecmd \ +o physical \ -o pipefail \ +o posix \ +o privileged \ +o verbose \ +o vi \ export PROMPT_DIRTRIM=4 export HISTCONTROL=ignoredups export HISTSIZE=65536 export HISTFILESIZE=65536 ######################################################################## ### Load code ######################################################################## # make less more friendly for non-text input files, see lesspipe(1) if ( [ ! -z "$LESSOPEN" ] || [ ! "$LESSCLOSE" ] ) && [ -x /usr/bin/lesspipe ] then eval "$(SHELL=/bin/sh lesspipe)" fi if [ ! -z "$LS_COLORS" ] && prog=`which dircolors 2>&3` then eval "`$prog -b`" fi # Only load bash_completion if it is not already loaded if [ -z "$BASH_COMPLETION" ] then [ -f /etc/bash_completion ] && . /etc/bash_completion [ -f /usr/etc/bash_completion ] && . /usr/etc/bash_completion [ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion fi [ -r $HOME/.euca2/eucarc ] && . $HOME/.euca2/eucarc [ -r $HOME/.euca/eucarc ] && . $HOME/.euca/eucarc [ -r $HOME/.eucarc ] && . $HOME/.eucarc # load icc if avaliable if [ -r /home/icc/intel/cc/10.1.015/bin/iccvars.sh ] then source /home/icc/intel/cc/10.1.015/bin/iccvars.sh fi if [ -r $HOME/svp/slenv ] then eval `$HOME/svp/slenv last-installed 2>&3` elif [ -r $HOME/phd/svp/slenv ] then eval `$HOME/phd/svp/slenv last-installed 2>&3` fi if prog=`which cce 2>&3` then export MTA`$prog -s mta | grep slc_libdir` export SEQC`$prog -s seqc | grep slc_libdir` fi ######################################################################## ### Set path env ######################################################################## # setup sac2c # Setup sac if [ -d $HOME/svn/sac2c ] then export SACBASE=$HOME/svn export SAC2CBASE=$SACBASE/sac2c elif [ -d $HOME/phd/sac2c ] then export SACBASE=$HOME/phd export SAC2CBASE=$SACBASE/sac2c fi # Setup path dirlist PATH $SAC2CBASE/bin/ $SACBASE/stdlib/Scripts/{,*/} {$HOME,}/opt/*/{s,}bin/ $HOME/{local,usr,usr/local,}/{s,}bin/ /usr/game{,s}/ /usr/bin/game{,s}/ /usr/{*/,}{s,}bin/ /{,s}bin/ $HOME/.opam/default/bin ${HOME}/.local/bin ######################################################################## ### Start tahoe if setup ######################################################################## # Keep below path so we can find tahoe for dir in ${HOME}/.tahoe ${HOME}/.tahoe/node ${HOME}/.tahoe/introducer do if [ -d ${dir} ] then if [ `(ps -ef | grep $(cat ${dir}/twistd.pid) | grep -v "grep" | wc -l) 2>&3` -lt 1 ] then # tahoe not running start it ((nohup tahoe start --node-directory=${dir} 2>&3 >&3 )&) echo "Started tahoe: " ${dir} >&3 else echo "tahoe running: " ${dir} >&3 fi fi done if [ -x ${HOME}/.tahoe/mnt ] then ${HOME}/.tahoe/mnt 2>&3 >&3 echo "Ran tahoe mnt script" >&3 fi ######################################################################## ### Setup terminal ######################################################################## # Unset terminfo if it points to a non existant file if [ ! -z $TERMINFO ] && [ ! -e $TERMINFO ] then unset TERMINFO fi # If TERMINFO is unset then make sure TERM is sane and something # supported idealy with 256 color # # If we are loging in by ssh for example the clients terminal may not # be supported on the server :( if ( [ ! -z $TERMINFO ] || terminalexist $TERM ) then if terminalexist $TERM-256color then export TERM=$TERM-256color fi else if terminalexist xterm-256color then export TERM=xterm-256color elif terminalexist xterm then export TERM=xterm elif terminalexist vt102 then export TERM=vt102 elif terminalexist vt100 then export TERM=vt100 else export TERM=ansi fi fi ######################################################################## ### Set color variables ######################################################################## if prog=`which tput 2>&3` then NORMAL=`tput sgr0 2>&3` BLACK=`tput setaf 0 2>&3` RED=`tput setaf 1 2>&3` GREEN=`tput setaf 2 2>&3` YELLOW=`tput setaf 3 2>&3` BLUE=`tput setaf 4 2>&3` MAGENTA=`tput setaf 5 2>&3` CYAN=`tput setaf 6 2>&3` WHITE=`tput setaf 7 2>&3` BBLACK=`tput setab 0 2>&3` BRED=`tput setab 1 2>&3` BGREEN=`tput setab 2 2>&3` BYELLOW=`tput setab 3 2>&3` BBLUE=`tput setab 4 2>&3` BMAGENTA=`tput setab 5 2>&3` BCYAN=`tput setab 6 2>&3` BWHITE=`tput setab 7 2>&3` BLINK=`tput blink 2>&3` BOLD=`tput bold 2>&3` REV=`tput rev 2>&3` ULINE=`tput smul 2>&3` NULINE=`tput rmul 2>&3` else NORMAL='' BLACK='' RED='' GREEN='' YELLOW='' BLUE='' MAGENTA='' CYAN='' WHITE='' BBLACK='' BRED='' BGREEN='' BYELLOW='' BBLUE='' BMAGENTA='' BCYAN='' BWHITE='' BLINK='' BOLD='' REV='' ULINE='' NULINE='' fi # lists of chars LETTERS_LOWER="abcdefghijklmnopqrstuvwxyz" LETTERS_UPPER="ABCDEFGHIJKLMNOPQRSTUVWXYZ" NUMBERS="0123456789" SYMBOLS="\`!\"?\$%^&*()_-+={[}]:;@'~#|\\<,>./" PRINTABLE=$LETTERS_LOWER$LETTERS_UPPER$NUMBERS$SYMBOLS ######################################################################### ### Hello ######################################################################## if [ ! -z "$PS1" ] && ! $HUSHLOGIN then ( if prog=`which hostname 2>&3` then echo $MAGENTA $prog -s echo -n $BLUE echo -n "($CORES) " $prog -a 2>&3 echo -n $NORMAL fi if prog=`which uptime 2>&3` then echo -n $CYAN $prog echo -n $NORMAL fi )& waits="$waits $!" fi ######################################################################## ### Setup non path environment ######################################################################## # Enable malloc return value clearing (helps find bugs when developing) # export MALLOC_CHECK_=3 # export MALLOC_PERTURB_=$(($RANDOM % 255 + 1)) dirlist LD_LIBRARY_PATH /home/stca/local/lib/ $HOME/local/lib {$HOME,}/opt/*/lib {$HOME,}/opt/android-sdk-linux/tools/lib/ $HOME/opt/android-sdk-linux/tools/lib dirlist LD_RUN_PATH /home/stca/local/lib/ $HOME/local/lib {$HOME,}/opt/*/lib {$HOME,}/opt/android-sdk-linux/tools/lib/ $HOME/opt/android-sdk-linux/tools/lib dirlist INFOPATH /home/stca/local/info/ $HOME/local/info {$HOME,}/opt/*/info dirlist MANPATH /home/stca/local/man/ $HOME/local/{,share/}man {$HOME,}/opt/*{,/share}/man /usr/{,local/}{,share/}man/ dirlist PYTHONPATH {$HOME,}/opt/*/lib/python*/site-packages # May be usefull #dirlist XDG_DATA_DIRS /home/stca/local/man/ $HOME/local/share {$HOME,}/opt/*/share /usr/{,local/}share/ dirlist INTEL_LICENSE_FILE dirlist NLSPATH dirlist POSSIBLE_CPPFLAGS /home/stca/local/*/include $HOME/local/include {$HOME,}/opt/*/include dirlist POSSIBLE_LDFLAGS /home/stca/local/*/lib/ $HOME/local/lib {$HOME,}/opt/*/lib # Try to find out the number of cores on this system if [ -e /sys/devices/system/cpu ] then export CORES=`ls -1 /sys/devices/system/cpu | grep -E 'cpu[0-9]+' | wc -l` elif prog=`which parallel` then export CORES=`$prog --number-of-cpus` else export CORES=1 fi export POSSIBLE_CPPFLAGS=${POSSIBLE_CPPFLAGS//:/ -I} export POSSIBLE_LDFLAGS=${POSSIBLE_LDFLAGS//:/ -L} if [ ! -z "$POSSIBLE_CPPFLAGS" ] then export POSSIBLE_CPPFLAGS=-I$POSSIBLE_CPPFLAGS fi if [ ! -z "$POSSIBLE_LDFLAGS" ] then export POSSIBLE_LDFLAGS=-L$POSSIBLE_LDFLAGS fi # Hash for quicker program seaching basic programs # List from busybox #hash acpid addgroup adduser adjtimex ar arping ash awk basename \ # blockdev brctl bunzip2 bzcat bzip2 cal cat chgrp chmod chown chroot \ # chvt clear cmp cp cpio crond crontab cut date dc dd deallocvt \ # delgroup deluser df dirname dmesg dnsdomainname dos2unix dpkg dpkg-deb \ # du dumpkmap dumpleases echo ed egrep eject env expand expr false \ # fbset fdflush fdisk fgrep find fold free freeramdisk fsck.minix ftpget \ # ftpput getopt getty grep gunzip gzip halt head hexdump hostid hostname \ # httpd hwclock id ifconfig ifdown ifup init ionice ip ipcalc kill \ # killall klogd last length less linuxrc ln loadfont loadkmap logger \ # login logname logread losetup ls lzcat makedevs md5sum mdev mesg \ # microcom mkdir mkfifo mkfs.minix mknod mkswap mktemp more mount mt mv \ # nameif nc netstat nslookup od openvt passwd patch pidof ping ping6 \ # pivot_root poweroff printf ps pwd rdate readlink realpath reboot renice \ # reset rm rmdir route rpm rpm2cpio run-parts sed setkeycodes sh sha1sum \ # sha256sum sha512sum sleep sort start-stop-daemon static-sh strings stty \ # su sulogin swapoff swapon sync syslogd tac tail tar tee telnet \ # telnetd test tftp time timeout top touch tr traceroute traceroute6 \ # true tty tunctl udhcpc udhcpd umount uname uncompress unexpand uniq \ # unix2dos unlzma unzip uptime usleep uudecode uuencode vconfig vi vlock \ # watch watchdog wc wget which who whoami xargs yes zcat \ # 7z rar unrar >&3 2>&3 if prog=`which less 2>&3` then export PAGER="$prog -S" export LESSCHARSET=utf-8 elif prog=`which more 2>&3` then export PAGER=$prog fi if prog=`which firefox 2>&3` then export BROWSER="$prog" fi if prog=`which emacs-wrapper 2>&3` then export EDITOR="$prog" export VISUAL="$prog" elif prog=`which emacs 2>&3` then export EDITOR="$prog -nw" export VISUAL="$prog -nw" elif prog=`which mg 2>&3` then export EDITOR="$prog" export VISUAL="$prog" elif prog=`which nano 2>&3` then export EDITOR="$prog" export VISUAL="$prog" elif prog=`which pico 2>&3` then export EDITOR="$prog" export VISUAL="$prog" elif prog=`which vi 2>&3` then export EDITOR="$prog" export VISUAL="$prog" fi if prog=`which ssh-askpass` then export SUDO_ASKPASS=$prog export SSH_ASKPASS=$prog fi if prog=`which dominname 2>&3` then case `$prog` in *herts.ac.uk) export PRINTER=STRC2 ;; *joslinfamily.co.uk) export PRINTER=B7320 ;; *${ET}) export PRINTER=B7320 ;; *) export PRINTER=B7320 ;; esac fi if [ -d /usr/lib/jvm/java-7-openjdk-amd64 ] then JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 fi if prog=`which kpsepath 2>&3` then export BIBINPUTS=.:`$prog bib 2>&3` export BSTINPUTS=.:`$prog bst 2>&3` export TEXINPUTS=$TEXINPUTS:`$prog tex 2>&3` fi dirlist BIBINPUTS dirlist BSTINPUTS dirlist TEXINPUTS . $HOME/.tex/ /usr/share/texmf-tetex/tex/latex/ /usr/share/texmf/pdftex/config/ /usr/share/texmf/pdftex/ # Add default export BIBINPUTS=$BIBINPUTS:: export BSTINPUTS=$BSTINPUTS:: export TEXINPUTS=$TEXINPUTS:: export EMAIL=carl.joslin@${ET} export NAME="Carl A Joslin" export XMPP=carl@${ET} export COLORFGBG="green;black" export OOO_FORCE_DESKTOP="gnome" if [ -d /opt/AMDAPP ] then export ATISTREAMSDKROOT=/opt/AMDAPP fi # Get imagemagic to use mem maped files over memory except very small pictures #export MAGICK_MAP_LIMIT=8EB #export MAGICK_MEMORY_LIMIT=8MB ######################################################################## ### SSH ######################################################################## if [ $BASHRC_UPDATE ] then (( # If we are allowed to update then make sure ssh is sane [ ! -d $HOME/.ssh/ ] && mkdir $HOME/.ssh [ ! -d $HOME/.ssh/private_keys ] && mkdir $HOME/.ssh/private_keys [ ! -e $HOME/.ssh/authorized_keys ] && touch $HOME/.ssh/authorized_keys # Make permisions sane chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys $HOME/.ssh/private_keys )&) fi ######################################################################## ### Set alias ######################################################################## if prog=`which date 2>&3` then alias fdate="$prog +'%Y%m%d%H%M%S'" fi if prog=`which python 2>&3` then #alias calc="$prog -ic 'from math import *'" alias calc="$prog -i ${HOME}/.pythoncalc.py" elif prog=`which python2 2>&3` then alias calc="$prog -i ${HOME}/.pythoncalc.py" fi alias emacs=$EDITOR if prog=`which ls 2>&3` then if $prog /dev/null --color=auto >/dev/null 2>&3 then alias ls="$prog --color=auto" fi fi # May be overwritten later alias fgrep="$prog -F" alias egrep="$prog -E" if prog=`which grep 2>&3` then if $prog --color=auto tutu >&3 2>&3 <<&3` then if $prog --color=auto tutu >&3 2>&3 <<&3` then alias diff="$prog" fi if prog=`which mount 2>&3` && prog2=`which column 2>&3` then alias mount="$prog | $prog2 -t" fi if prog=`which egrep 2>&3` then if $prog --color=auto tutu >&3 2>&3 <<&3` then alias cps="cp --sparse=always" alias cpw="cp --reflink=auto" fi if prog=`which minicom 2>&3` then alias minicom="$prog -c on" fi # Keep before grc as it may override export MYMAKE='nice make -j $(($CORES*4)) -l $(($CORES*2))' alias m=$MYMAKE # Make things colourful if prog=`which grc 2>&3` then for program in /usr/share/grc/* /usr/local/share/grc/* $HOME/.grc/* do program=`basename $program` if [ "$program" != "*" ] then program=${program:5} if exe=`which $program 2>&3` then #echo "alias" >&3 alias $program="$prog -es --colour=auto $exe" fi fi done # keep after check of avalible colorisers to override. alias configure="$prog -es --colour=auto ./configure" export MYMAKE="nice $prog -es --colour=auto make -j \$((\$CORES*4)) -l \$((\$CORES*2))" alias m=$MYMAKE fi if prog=`which import 2>&3` then alias ss="$prog -window /tmp/$$_$RANDOM.png" elif prog=`which scrot 2>&3` then alias ss="(cd /tmp;$prog)" fi if prog=`which gzcat 2>&3` then alias gcat=$prog elif prog=`which zcat 2>&3` then alias gcat=$prog elif prog=`which gunzip 2>&3` then alias gcat="$prog -c" fi if prog=`which head 2>&3` then alias lhead="$prog -n $((${LINES}-2))" fi if prog=`which tail 2>&3` then alias ltail="$prog -n $((${LINES}-2))" fi if prog=`which sshfs 2>&3` then alias mountuh="$prog -C -o entry_timeout=600 -o attr_timeout=600 -o intr -o cache_timeout=600 -o idmap=user caj@obelix.herts.ac.uk: ~/uhmnt" fi if prog=`which screen 2>&3` then alias screen="$prog -U" fi if prog=`which indent 2>&3` then alias indentw="$prog -l\$COLUMNS -nbad -bap -nbc -bbo -br -bls -ncdb -ce -cp1 -ncs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -npcs -psl -saf -sai -saw -sc -nsob -lc 70 -nuta -ppi 3 -cdw " alias indent="$prog -nbad -bap -nbc -bbo -br -bls -ncdb -ce -cp1 -ncs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -npcs -psl -saf -sai -saw -sc -nsob -lc 70 -nuta -ppi 3 -cdw " fi if prog=`which xvnc4viewer 2>&3` then alias vnc="$prog" elif prog=`which xtightvncviewer 2>&3` then # remote encodings even for local alias vnc="$prog -compresslevel 9 -quality 5 -truecolour -encodings 'copyrect tight hextile zlib corre rre raw'" elif vncviewer -v 2>&1 | grep -i tight >&3 2>&3 then alias vnc="vncviewer -compresslevel 9 -quality 5 -truecolour -encodings 'copyrect tight hextile zlib corre rre raw'" else alias vnc="vncviewer" fi [ -x /opt/bluej/bluej ] && alias bluej='/opt/bluej/bluej' [ -x $HOME/opt/bluej/bluej ] && alias bluej='$HOME/opt/bluej/bluej' if prog=`which ssh 2>&3` then alias et="$prog -X carl@${ET}" alias csa="$prog -t unibench@ubuntix.herts.ac.uk \"echo;ssh -t csa 'nice bash'\"" alias timeless="$prog -t unibench@ubuntix.herts.ac.uk \"echo;ssh -t stca@stri-cluster.herts.ac.uk\"" alias stricluster="$prog -t cjoslin@stri-cluster.herts.ac.uk" fi alias cd..='cd ..' alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' alias ......='cd ../../../../..' alias .......='cd ../../../../../..' alias ........='cd ../../../../../../..' alias .........='cd ../../../../../../../..' alias ..........='cd ../../../../../../../../..' # Generatate password genpasswd() { local l=$1 [ "$l" == "" ] && l=16 tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs } ######################################################################## ### Circled numbers ######################################################################## CIRCLED=( ⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ) ######################################################################### ### ulimits ######################################################################## # Core dump #ulimit -c unlimited ######################################################################## ### dropbox ######################################################################## #if prog=`which dropbox 2>&3` #then # (( $prog start >/dev/null 2>/dev/null ) & ) #fi ######################################################################### ### Set prompt ######################################################################## case "$TERM" in *xterm* | *rxvt* | *vt100* | *cyg* | *mlterm*) title="\e]0;\u@\h:\w\a" ;; *) ;; esac if [ "${TERM:0:6}" == "screen" ] then export PS1screen="⌨" else export PS1screen="" fi if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) debian_chrootn="$(cat /etc/debian_chroot) " else debian_chroot="" debian_chrootn="" fi export PS1="\[${NORMAL}\]$debian_chrootn\$PS1signal\$PS1screen\[\${PS1retcolor}\]\$PS1RET\[$NORMAL\](\[\${PS1jobcolor}\]\j\[$NORMAL\])\[${title}\]\[\${PS1namecolor}\]\u\[$NORMAL\]\[\$PS1sudocolor\]\${SUDO_USER}\[$NORMAL\]@\[\${PS1hostcolor}\]\h\[$NORMAL\]:\w\\$ " real_prompt_command=' cnum=( ) function colorname { local name=$1;shift; case "$name" in # usernames I use carl | caj | cjoslin | jc6ag) echo $NORMAL ;; # root users root ) echo $RED ;; *) if groups $name | grep admin >/dev/null 2>/dev/null then # in admin group probably can get root access with sudo echo $MAGENTA elif [ -O ~/.bashrc ] then echo $CYAN else echo $BLUE fi ;; esac } if [[ $RET -eq 0 ]] then PS1retcolor=$GREEN PS1signal= else export PS1retcolor=$RED if [ $RET -gt 128 ]; then signal="$(builtin kill -l $(($RET - 128)) 2>/dev/null)" if [ "$signal" ]; then PS1signal="$signal " fi fi fi PS1RET=`printf %03d $RET` PS1namecolor=`colorname $USER` PS1sudocolor=$ULINE if [ "$SUDO_USER" != "" ] then PS1sudocolor=`colorname $SUDO_USER`$ULINE fi if [ "$SSH_CLIENT" != "" ] then PS1hostcolor=$BLUE else PS1hostcolor=$NORMAL fi if [ -z "`jobs`" ] then PS1jobcolor=$NORMAL else PS1jobcolor=$MAGENTA fi ' if uudecode=`which uudecode 2>&3` && uuencode=`which uuencode 2>&3` && cat=`which cat 2>&3` && head=`which head 2>&3` && tail=`which tail 2>&3` && tr=`which tr 2>&3` then # Pack the real prompt command as to complicated when doing env # export PROMPT_COMMAND_PACKED=`cat <<<"$real_prompt_command" | $uuencode -m - | $tail -n +2 | $head -n -1 | $tr -d '\n'` export PROMPT_COMMAND_PACKED=`cat <<<"$real_prompt_command" | $uuencode -m -` # Unpack real prompt command # export PROMPT_COMMAND="RET=\$?;eval \"\$((echo 'begin-base64 664 -';echo \$PROMPT_COMMAND_PACKED;echo '====') | $uudecode)\"" export PROMPT_COMMAND="RET=\$?;eval \"\$(echo \"\$PROMPT_COMMAND_PACKED\" | $uudecode)\"" else # System not advanced enough for packing the prompt command export PROMPT_COMMAND="RET=\$?;$real_prompt_command" fi # unset local function unset -f dirlist unset -f requireDir unset -f updateFile unset -f mkexe unset -f terminalexist unset -f which unset -f mycmp wait $waits if [ ! -z $TERMINAL ] && [ -x $TERMINAL ] then export TERMINAL elif [ -x $HOME/bin/terminal ] then export TERMINAL=$HOME/bin/terminal elif prog=`which xterm` then export TERMINAL=$prog fi # Do not do in background as may need passwd # ssh-add should be able to work out if we can provide a password # Do not do when HUSHLOGIN is true as do not want password prompt if ! $HUSHLOGIN then if prog=`which ssh-add` then if [ -e $SSH_AUTH_SOCK ] then $prog >&3 2>&3 for i in $HOME/.ssh/private_keys/* do if [ "$i" == "$(dirname $i)/$(basename $i .pub)" ] then $prog $i >&3 2>&3 fi done fi fi fi # Close loging file handle exec 3>&-