User:Pwagstro/.bashrc
Jump to navigation
Jump to search
My .bash_profile
This is my primary file. It uses some host detection to figure out what files it should load for the colors of the prompt and then sets up most of my environment variables. It's starting to show it's age from when I switched to bash back in 1997. Ooohhh, compiler optimizations for 32 bit sparc platforms! There are some nifty features in this that others may like. First, it's got a wicked cool prompt, well, I thought so back in 1998 when I made it. Second, I can modify and add directories to the permanent path from the command line by using the addpath command.
#-----------------------------------------------------------------------------
# /home/patrick/.bash_profile
#-----------------------------------------------------------------------------
# Patrick Wagstrom's .bash_profile file
#-----------------------------------------------------------------------------
# copyright © 1997-2008 Patrick Wagstrom
# patrick@wagstrom.net
#-----------------------------------------------------------------------------
##############################################################################
# let everything know that we've loaded the bash_profile, this also helps to
# only load the file once
#
if [ $BASHPROFILE_LOADED ]; then
echo "~/.bash_profile already loaded. To reload use bashreload"
return;
fi
BASHPROFILE_LOADED=1
##############################################################################
# set some initial variables about the operating system
#
OS=`uname`
ARCH=`uname -m`
# CPU=`arch -s`
##############################################################################
# first get the hostname
#
case "$OS" in
OpenBSD)
HOST=`hostname -s`
;;
Linux)
HOST=`uname -n`
;;
SunOS)
HOST=`hostname`
;;
*)
HOST=`echo $HOSTNAME | sed "s/\([a-z]*\)\..*/\1/"`
;;
esac
##############################################################################
# set up the configuration directory
#
if [ -d $HOME/configs ]; then
CONFDIR="$HOME/configs/bash"
else
CONFDIR="$HOME/Documents/personal/configs/bash"
fi
HOSTCONF="$CONFDIR/$HOST"
##############################################################################
# load the .bashrc file
#
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
##############################################################################
# set up the colors for each terminal
#
ESC="\033["
BLACK="\[\033[0;30m\]"
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"
BROWN="\[\033[0;33m\]"
BLUE="\[\033[0;34m\]"
MAGENTA="\[\033[0;35m\]"
CYAN="\[\033[0;36m\]"
WHITE="\[\033[0;37m\]"
LIGHTBLACK="\[\033[1;30m\]"
LIGHTRED="\[\033[1;31m\]"
LIGHTGREEN="\[\033[1;32m\]"
YELLOW="\[\033[1;33m\]"
LIGHTBLUE="\[\033[1;34m\]"
LIGHTMAGENTA="\[\033[1;35m\]"
LIGHTCYAN="\[\033[1;36m\]"
LIGHTWHITE="\[\033[1;37m\]"
case "$HOST" in
dreams)
COLOR1=$LIGHTGREEN
COLOR2=$LIGHTBLUE
;;
visions)
COLOR1=$LIGHTRED
COLOR2=$YELLOW
;;
apollo)
COLOR1=$LIGHTBLUE
COLOR2=$YELLOW
;;
host106)
COLOR1=$LIGHTCYAN
COLOR2=$WHITE
;;
scissors)
COLOR1=$BROWN
COLOR2=$CYAN
;;
aspirations)
COLOR1=$BLUE
COLOR2=$WHITE
;;
*)
COLOR1=$LIGHTBLUE
COLOR2=$RED
esac
if [ -f $HOSTCONF/promptcolors ]; then
. $HOSTCONF/promptcolors
fi
REGEXDIR=`perl -e '$a = $ENV{"HOME"}; $a =~ s/\//\\\\\//g; print $a'`
INTERACTIVE=`echo $- | grep i`
if [ $INTERACTIVE ]; then
export INTERACTIVE="TRUE"
fi
bashreload ()
{
unset BASHPROFILE_LOADED
. ~/.bash_profile
}
dpms_set ()
{
xset +dpms
xset dpms 600 1200 1800
}
# always append history
shopt -s histappend
prompt ()
{
# save the history
history -a
PLEFT=`echo $PWD | sed "s/$REGEXDIR\//\~\//"`
if [ $TERM != 'dumb' ]; then
# export PS1="$PL\n$COLOR1[$COLOR2\u$COLOR1@$COLOR2\h$COLOR1]$WHITE "
export PS1="$COLOR1[$COLOR2\w$COLOR1]\n$COLOR1[$COLOR2\u$COLOR1@$COLOR2\h$COLOR1]$WHITE "
if [ $TERM == 'xterm' ] || [ $TERM == 'dtterm' ]; then
# set the information in the window
echo -ne '\033]0;'$USER'@'$HOST':'$PLEFT' \007'
fi
else
# export PS1="[$PLEFT]\n[\u@\h] "
export PS1="\s-\v\$"
export PS2=">"
fi
unset PL
unset PLEFT
}
promptRV ()
{
# save the history
history -a
PLEFT=`echo $PWD | sed "s/$REGEXDIR\//\~\//"`
if [ $TERM != 'dumb' ]; then
# export PS1="$PL\n$COLOR1[$COLOR2\u$COLOR1@$COLOR2\h$COLOR1]$WHITE "
export PS1="$COLOR1[$COLOR2\w$COLOR1]\n$COLOR1[$COLOR2\u$COLOR1@$COLOR2\h$COLOR1]$BLACK "
if [ $TERM == 'xterm' ] || [ $TERM == 'dtterm' ]; then
# set the information in the window
echo -ne '\033]0;'$USER'@'$HOST':'$PLEFT' \007'
fi
else
export PS1="\s-\v\$"
export PS2=">"
fi
unset PL
unset PLEFT
}
add_colons ()
{
/bin/cat $1 | grep -v "^#" | /usr/bin/tr "\012" ":"
}
pathadd ()
{
for p in $*
do
echo $p >> ~/.bash_path
done
export PATH=`add_colons ~/.bash_path`
}
nkill ()
{
ps aux | grep $1 | tr -s ' ' | cut -d ' ' -f 2 | xargs -iX kill -9 X
}
rv ()
{
PROMPT_COMMAND=promptRV
}
load_java ()
{
JAVA_PATH=$1
if [ -d $JAVA_PATH ]; then
for i in `find ${JAVA_PATH} -maxdepth 1 -type l -print`; do
PATH=${PATH}:${i}/bin
done
export PATH
for i in $JAVA_HOME/jre/lib/*.jar; do
CLASSPATH=${CLASSPATH}:${i}
done
export CLASSPATH
fi
export PATH=$JAVA_HOME/bin:$PATH
}
if [ $TERM != "dumb" ]; then
PROMPT_COMMAND=prompt
else
prompt
unset $PROMPT_COMMAND
unset PROMPT_COMMAND
# stty -echo
stty icanon erase ^H
fi
export BASH_ENV=$HOME/.bashrc
export USERNAME=$USER
##############################################################################
# if we have these helper files, then load them
#
if [ -f $HOSTCONF/bash_path ]; then
export PATH=`add_colons $HOSTCONF/bash_path`
elif [ -f ~/.bash_path ]; then
export PATH=`add_colons ~/.bash_path`
else
export PATH="$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/usr/bin"
fi
if [ -f $HOSTCONF/bash_libs ]; then
export LD_LIBRARY_PATH=`add_colons $HOSTCONF/bash_libs`
elif [ -f ~/.bash_libs ]; then
export LD_LIBRARY_PATH=`add_colons ~/.bash_libs`
fi
# PostgreSQL stuff
export PGDATA=/usr/local/pgsql/data
# CVS and RSync configuration
# export CVSROOT=":ext:patrick@wagstrom.net:/home/cvs/patrick"
if ( [ -d /home/patrick/cvs ] && [ $HOST == 'dreams' ] ); then
export CVSROOT="/home/patrick/cvs"
else
export CVSROOT=":ext:patrick@dreams.wagstrom.net:/home/patrick/cvs"
fi
if [ -f /usr/local/bin/ssh ]; then
SSH='/usr/local/bin/ssh'
elif [ -f /usr/bin/ssh ]; then
SSH='/usr/bin/ssh'
fi
export CVS_RSH="$SSH"
export RSYNC_RSH="$SSH"
if [ -z $EDITOR ]; then
export EDITOR="vim"
fi
# export MANPATH=$MANPATH:/usr/local/pgsql/man
export TZ="America/New_York"
##############################################################################
# keychain - ssh key manager
#
KEYCHAIN=$(which keychain 2> /dev/null | grep -v "Command not found")
if ( [ $TERM == 'xterm' ] || [ $TERM == 'linux' ] ) && [ -n "$KEYCHAIN" ]; then
FILES=""
for fn in ~/.ssh/id_dsa ~/.ssh/id_rsa; do
if [ -f $fn ]; then
FILES="$FILES $fn"
fi
done
$KEYCHAIN -q $FILES
if [ -f ~/.keychain/${HOSTNAME}-sh ]; then
. ~/.keychain/${HOSTNAME}-sh
else
. ~/.ssh-agent-${HOSTNAME}
fi
fi
##############################################################################
# java setup
#
export JAVA_HOME=""
for x in /usr/lib/jvm/java-6-sun \
/usr/lib/jvm/java-5-sun \
/usr/local/java/jre1.5.0_06 \
/usr/local/java/jdk1.6.0 \
/usr/local/java/j2sdk1.4.2_11 \
/usr/lib/j2se/1.4 \
/usr/lib/j2se/1.5 \
/usr/java/jdk1.5 \
/usr/java/jdk1.5.0 \
/usr/java/jdk1.4 \
/usr/java/j2sdk1.4.2_02 \
/usr/java/j2sdk1.4.0 \
/usr/java/jdk1.3.1_02 \
/usr/j2sdk1.4.1_01
do
if [ -d $x ]; then
export JAVA_HOME="$x"
export JDK_HOME=$JAVA_HOME
break
fi
done
if [ $JAVA_HOME ]; then
export PATH="$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin"
fi
if [ -d /usr/local/java/JMF-2.1.1e ]; then
export JMFHOME="/usr/local/java/JMF-2.1.1e"
export CLASSPATH="$JMFHOME/lib/jmf.jar:.:${CLASSPATH}"
export LD_LIBRARY_PATH=$JMFHOME/lib:${LD_LIBRARY_PATH}
fi
##############################################################################
# compiler optimizations
#
case "$ARCH" in
athlon)
# export CFLAGS="-O2 -mcpu=athlon -march=athlon -funroll-loops -mmmx -m3dnow"
export CFLAGS="-O2 -mcpu=athlon -march=athlon -funroll-loops -mmmx"
# export RPM_OPT_FLAGS="-O2 -march=athlon -mcpu=athlon -mmmx -m3dnow"
export RPM_OPT_FLAGS="-O2 -march=athlon -mcpu=athlon -mmmx"
;;
sparc)
export CFLAGS="-02"
;;
sparc64)
export CFLAGS="-mcpu=v8 -mtune=v9 -O2 -pipe"
;;
k6)
export CFLAGS="-02 -march=k6 -funroll-loops -mmmx"
;;
*)
export CFLAGS="-O2 -funroll-loops"
esac
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS
##############################################################################
# irc settings
#
export IRCNAME="pridkett"
export IRCUSER="pridkett"
export IRCNICK="pridkett"
export IRCSERVER="irc.ipv6.homelien.no"
##############################################################################
# python settings
#
PYTHONPATH=""
PATHS="scarlet support cvsminer"
for x in ${PATHS}; do
if [ -d $HOME/Documents/$x/src ]; then
PYTHONPATH="$PYTHONPATH:$HOME/Documents/$x/src"
elif [ -d $HOME/code/$x/src ]; then
PYTHONPATH="$PYTHONPATH:$HOME/code/$x/src"
fi
done
PYTHONPATH="$PYTHONPATH:$HOME/code/dynet"
PYTHONPATH=$(echo $PYTHONPATH | sed -e 's/^://')
if [ -d $HOME/src/dbfpy ]; then
PYTHONPATH=$PYTHONPATH:$HOME/src/dbfpy
fi
export PYTHONPATH
load_java /usr/local/java
# export MONO_PATH="/usr/lib:/usr/local/lib"
export PATH=$JAVA_HOME/bin:$PATH
# colors for man pages via less
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
# -*- mode: shell-script-mode -*-
My .bashrc
This is my secondary file. Basically it only sets up a few aliases across all machines and then loads a set of host specific aliases.
#-----------------------------------------------------------------------------
# /home/patrick/.bashrc
#-----------------------------------------------------------------------------
# Patrick Wagstrom's .bashrc file
# User specific aliases and functions
#-----------------------------------------------------------------------------
# copyright © 1997-2008 Patrick Wagstrom
# patrick@wagstrom.net
#-----------------------------------------------------------------------------
where ()
{
f=`which $1 2> /dev/null | cut -d ' ' -f 1 | grep -v "which:" | grep -v "$1:"`
if [ -z $f ]; then
f='FileNotFound'
fi
echo $f
unset f
}
##############################################################################
# host specific aliases
#
OS=`uname`
case "$OS" in
OpenBSD)
HOST=`hostname -s`
;;
Linux)
HOST=`uname -n`
;;
SunOS)
HOST=`hostname`
;;
*)
HOST=`echo $HOSTNAME | sed "s/\([a-z]*\)\..*/\1/"`
;;
esac
##############################################################################
# set up the configuration directory
#
if [ -d $HOME/configs ]; then
CONFDIR="$HOME/configs/bash"
else
CONFDIR="$HOME/Documents/personal/configs/bash"
fi
HOSTCONF="$CONFDIR/$HOST"
##############################################################################
# load the .bashrc file
#
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if [ -f $HOSTCONF/bashrc ]; then
. $HOSTCONF/bashrc
fi
##############################################################################
# universal aliases
#
if [ "x$(grep --v 2>&1 | grep GNU)" != "x" ]; then
if [ $TERM != "dumb" ]; then
alias grep='grep --color=always'
alias egrep='egrep --color=always'
fi
fi
alias ls="ls --color=auto"
export LESS=-r
# other helpful stuff
alias emacsnox='TERM="xterm-256color" emacs -nw'
alias ec='TERM="xterm-256color" emacsclient -t'