# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything [ -z "$PS1" ] && return # Add an entry to PATH, iff it's not already there. addpath() { wanted_path=$1 at_end=$2 FOUND=$(echo $PATH | grep $wanted_path) if [ $? -ne 0 ] ; then if [ "$at_end" == "" ] ; then export PATH=$wanted_path:$PATH else export PATH=$PATH:$wanted_path fi fi } # don't put duplicate lines in the history. See bash(1) for more options # don't overwrite GNU Midnight Commander's setting of `ignorespace'. export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups # ... or force ignoredups and ignorespace export HISTCONTROL=ignoreboth # append to the history file, don't overwrite it shopt -s histappend # Don't escape variables when I hit tab shopt -s direxpand # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # make less more friendly for non-text input files, see lesspipe(1) #[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac # uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac export PROMPT_DIRTRIM=3 addpath $HOME/bin addpath $HOME/opt/bin end export IPLAYER_OUTDIR="$HOME/downloads/iplayer" # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then eval "`dircolors -b`" fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi SSH_AGENT_FILE=$HOME/ssh.sh if [ -f $SSH_AGENT_FILE ] ; then FILE_PID=$(grep SSH_AGENT_PID $SSH_AGENT_FILE | sed -e 's/^.*=//' | sed -e 's/;.*$//') RUNNING_PID=$(pgrep -U $USER ssh-agent) if [ "$RUNNING_PID" == "" ] ; then # No agent running echo Starting ssh-agent, you need to load keys though. ssh-agent > $SSH_AGENT_FILE . $SSH_AGENT_FILE elif [ "$RUNNING_PID" != "$FILE_PID" ] ; then echo Mismatch - file has $FILE_PID, system has $RUNNING_PID echo 'File is out of date; you might need to kill things and start again.' else # PIDs match, let\'s use the file . $SSH_AGENT_FILE 1>/dev/null KEYCOUNT=$(ssh-add -l | grep -v "The agent has no identities" | wc -l) echo Using ssh-agent $RUNNING_PID, $KEYCOUNT keys loaded fi else # Assume no agent running echo Starting ssh-agent, you need to load keys though. ssh-agent > $SSH_AGENT_FILE . $SSH_AGENT_FILE fi if [ "$HOME2" != "" ] ; then echo "Switched root, merging $HOME2/.Xauthority" xauth merge $HOME2/.Xauthority fi # TODO Do with dropbox now... # Done the longer format so we catch dropbox instance, rather than stuff like # "links http://www.dropbox.com/" # DROPBOX_PID=$(ps -u paul | grep dropbox$ | awk '{print $1}') # if [ "$DROPBOX_PID" == "" ] ; then # echo "Note - Dropbox isn't running!" # fi [ -f ~/.fzf.bash ] && source ~/.fzf.bash # Load any supplementary scripts if [ -d "$HOME"/.bashrc.d ] ; then for config in "$HOME"/.bashrc.d/*.bash ; do source "$config" done unset -v config fi if [ -f ${HOME}/.bashrc.d/local/${HOSTNAME}.bash ] ; then source ${HOME}/.bashrc.d/local/${HOSTNAME}.bash fi