User:Bseklecki/.bashrc

From WPLUG
< User:Bseklecki
Revision as of 03:08, 13 December 2008 by Bseklecki (talk | contribs) (Initil creation ~BAS)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
#unlias rm

# Brian Seklecki's general bash_profile. 
#
# $Id: .bash_profile,v 1.10 2002/12/24 01:50:21 lavalamp Exp lavalamp $
#
# ~/.bash_login not needed
# Maintained on mercury.hq.sgi.net (mercury.int.crane.stargate.net) from late 1998 -> late 2001
# Entered into CVS on addiction.spiritual-machines.org on  Sun Mar 10 20:32:00 EST 2002
# At that time, decided to re-write quite a bit due to new reference:
# "Learning the BASH Shell" -- O`Reilly & Associates -- 2nd Edition

# Set the prompt - made for using a nice terminal like SecureCRT on a box that does at least 1280x1024
# export PS1='[\d @ \@] \u@\h:$PWD\$ '
# old school PS1 12/11/00

# Some 'To-Do's 
#
####
# *) READ A BLOODY CONF FILE 
# *) Use functions() 
# *) better use of $UNAME cases
# *) Cleaner output @ login                    
# *) Need X/11 $DISPLAY hashing to test for SSH Tunnel Forwarding
#####

####
# All functions and prototypes below this point
####
		# we need a quick check here because $OLDPWD doesn't get
		# reset if you just press enter, and it SHOULDN'T
		# so you can "cd -", but we need some way of telling
		# we've been here before so the first IF doesn't false
		# positive on us!


function getDirDiskUsage {

    	return 0;
    	local CFN=".curDirDiskUsage"

    	# KEY NOITE: THE CACHE IS ONLY GOOD ONCE WE'RE IN THE DIR
	# ONCE WE LEAVE THE DIR WE NEED TO REMOVE IT

	if [ -r $CFN ] ; then
	    	# we have a cachefile
		# must have just pressed enter from last prompt
		#echo -n "D1 "
		echo -n $(cat $CFN)
	elif [ -w . ] ; then
		# IN A SUBDIR OF ~ AND -->
 		# NO CACHE-FILE, REMOVE LAST DIR'S STALE CACHE FILE
		# AND DO THE THE CACHE FOR NEW DIR
	    	#echo -n "D2 "
		if [ -w $OLDPWD/$CFN ]; then
	  		rm $OLDPWD/.curDirDiskUsage
		fi
		echo -n $(du -Hs . 2>/dev/null | awk '{print $1}') > $CFN
		echo -n $(cat $CFN)
	else		
		# MUST NOT BE IN ~ SUBDIR OR WRITEABLE DIR
 		# JUST DO DU(1)
		#echo -n "D3 "
		if [ -w $OLDPWD/$CFN ]; then
	  		rm  $OLDPWD/.curDirDiskUsage
		fi
		echo -n $(du -Hs . 2>/dev/null | awk '{print $1}')
	fi
}

function getNumberOfJobs {

	wcOut=$(jobs | wc -l | sed -e 's/space://g')
	echo -n $wcOut
}

function parseDFAlias {
# the df alias is very special
# no two OSs share the same syntax, although they all claim to be posix compliant
# hmmm

# setup to print inodes as well
# use 'human readable' flag if possible
# ASSUME $BLOCKSIZE IS SET

case $_uname in 
	NetBSD*)
		alias df="/bin/df -i"
		;;
	OpenBSD*)
		alias df="/bin/df -i"
		;;
	FreeBSD*)
		alias df="/bin/df -iH"
		;;
	Linux*)
		alias df="/bin/df -h"
		;;
	SunOS*)
		alias df='/usr/bin/df -F ufs -o i ; echo "*****************************************************************" ; /usr/bin/df -k'
		;;
	

esac

#close function

}

function setUpX11 {

case $DISPLAY in
	":0"*)
		echo "# X/11 Style	: Local"
		echo "# X/11 Display	: $DISPLAY"
		;;
	"")
		echo "# X/11 Style	: Disabled"
		;;

	*)	if [ -n "$SSH_CLIENT"  ]; then 
			echo "# X/11 Style	: Unknown/Remote CLEARTEXT"
			echo "# X/11 Display	: $DISPLAY"
		else
			echo "# X/11 Style 	: Remote/SSH Tunnel"
			sshDisplayIp=$(echo $SSH_CLIENT| awk -F' ' '{print $1}')
			echo "# X/11 Display	: $DISPLAY @--> $sshDisplayIp"
		fi
		;;
esac

}

#### 
# END FUNCTIONS
####

# First thing to do is establish a host where the RCS version of this file is available on demand
_rootCopyHost=addiction.spiritual-machines.org

_uname=$(uname)
_unameA=$(uname -a)

# Into information for user at beginning of login
echo "Starting shell initialization, please wait."
echo -n "Profile version: "
echo '$Revision: 1.10 $'
echo -n "Adjusting for platform: "
echo $_unameA

echo "Part 1: Setting numerous environmental variables..."

# NetCool License Server
export NCO_ELMHOST=polaris.noc.sgi.net

# SET BLOCKZIE FOR POSIX 
# values can be '1k' or '1024'
echo "Setting POSIX blocksize..."
export BLOCKSIZE=1024

#Set remote X server based on SSH remote host
#Do not uncomment unless you are not using X11 forwarding on SSH
echo "Setting up X/11 DISPLAY..."
#export DISPLAY=`echo $SSH_CLIENT | cut -f1 -d ' '`:0

# Who the eff would think that the EMACS docs would ever be bigger than the binary
echo "Setting global EDITOR env..."
export EDITOR=vim

echo "Establishing prompt configuration..."
# Colors for a NewerNicer(r) bash prompt
# Greets to SteveK (shade) and to whomever he jacked them from
export COLOR1="\[\033[0;36m\]"	# Dark Cyan
export COLOR2="\[\033[1;30m\]"  # Light Black (grey maybe)
export COLOR3="\[\033[1;36m\]"  # Light Cyan
export COLOR4="\[\033[0m\]"     #
export COLOR5="\[\033[1;37m\]"  # Light White
export COLOR6="\[\033[0;31m\]"  # Red
export COLOR7="\[\033[0;35m\]"  # Purple
export COLOR8="\[\033[1;31m\]"	# Light Red
export COLOR9="\[\033[1;32m\]"	# Light Green
export COLOR0="\[\033[0;32m\]"	# Green
export COLORA="\[\033[1;34m\]"	# Light Blue
export COLORB="\[\033[0;34m\]"	# Blue

TTYLL="$(echo `tty` | sed 's/\/dev\///')"

# quickie chart colors
# Black 0;30m
# White 1;37m 
# Blue 0;34m
# Light Blue 1;34m 
# Green 0;32m 
# Light Green 1;32m 
# Cyan 0;36m
# Light Cyan 1;36m 
# Red 0;31m
# Light Red 1;31m 
# Purple 0;35m
# Pink 1;35m 
# Brown 0;33m
# Yellow 1;33m 
# Light Gray 0;37m
# Dark Gray 1;30m 



# Decode how to setup the prompt based on X11 or not
# Don't use PROMPT_COMMAND if the terminal software is gonna barf (physical terms will barf)
case $TERM in
	xterm*)
		export PS1="$COLOR3[$COLOR7\d $COLOR3@ $COLOR7\@$COLOR3] $COLOR1\u$COLOR3($COLOR8$TTYLL$COLOR3)@$COLOR1\h$COLOR3[$COLOR6\$(getNumberOfJobs)$COLOR3][$COLOR0\!$COLOR3]$COLOR1:\$PWD$COLOR3($COLOR8\$(getDirDiskUsage)$COLOR3)\$$COLOR4 "
		export PROMPT_COMMAND='export RSTATUS=$?; echo -ne "[$RSTATUS] "; export PS1; echo -ne "\033]0;${LOGNAME}@${HOSTNAME}:${PWD}\007"'

		;;
	ansi*)
                export PROMPT_COMMAND='echo -ne "\033]0;${LOGNAME}@${HOSTNAME}:${PWD}\007"'
                ;;
	*)
		export PS1='[\d @ \@] \u@\h:$PWD\$ '
		;;
esac

# Other prompts (some are debuggers)
echo "Setting other prompts..."
export PS2='more> '
export PS3
export PS4

#Set the path.  Keep adding to this as Sun Microsystems and Linux ruin the unix directory structure
echo "Setting man paths..."
export PATH=~/bin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/X/bin:/usr/x/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin:/usr/ucb:/usr/contrib/bin:/opt/SUNWspro/bin/:/opt/PGPcmdln/:/var/qmail/bin:/usr/pkg/bin:/usr/pkg/sbin:/usr/proc/bin:/opt/gnome/bin:/usr/bin:/bin:/usr/sbin:/sbin

# Man path (same trash talk about Sun and Linux here)
echo "Setting up man page paths..."
export MANPATH=/usr/pkg/man:/usr/local/man:/usr/share/man:/usr/man:/usr/X/man:/usr/X11R6/man:/usr/X11R5/man

# Compiling & Development settings here
# CLFAGS & Other Compiler Optimizations
echo "Setting up development environment and compiler optimizations..."
export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/opt/gnome/lib:/usr/X11R6/lib:/usr/X/lib
#export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/pkg/lib/pkgconfig:/ysr/X11R6/lib/pkgconfig"
# old solaris h4x that were absolutely essential to using gnu gcc and
# binutils on 6,7,8,9
# export LDFLAGS="-ldl -lnsl -lsocket

_compilePathsInclude="-I/usr/include -I/usr/pkg/include -I/usr/local/include -I/usr/X11R6/include -I/usr/X/include"
_compilePathsLink="-L/usr/lib -L/usr/pkg/lib -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X/lib"

#export LDFLAGS="$_compilePathsInclude $_compilePathsLink"
#export CFLAGS="$_compilePathsInclude $_compilePathsLink"
#export CPPFLAGS=""
#export CXXFLAGS=""


# this is needed for SSH aliases below
export SSHPATH=$(which ssh)

# BEING ALIASES (PART 2)
echo "Part 2: Setting numerous aliases..."

# Set all aliases
echo -n "Index: "
parseDFAlias
echo -n "df, "
alias tr="traceroute"
echo -n "tr, "
alias ls="ls -laF"
echo -n "ls, "
alias mx="nslookup -query-type=MX"
echo -n "mx, "
alias dir='ls -laF | grep "^d"'
echo -n "dir, "
# alias pine='pine.4.21'
# systems patched to 4.3 and renamed binary as per obiits/CMS case
# Long live Amber Wolfe 
alias whois="whois -h whois.networksolutions.com"
echo -n "whois, "
# Some version of top don't check a termcap/term's $height
alias top="top 100"
echo -n "top, "
alias awhois="/usr/bin/whois -h whois.arin.net"
echo -n "awhois, "
alias screen="screen -T $TERM -c ~/.screenrc -e^Ff -s $SHELL"
echo -n "screen, "
#alias startx="clear & xinit -- -nolisten tcp & logout"
#echo -n "startx, "
alias ssh="$SSHPATH -2 -v"
echo -n "ssh, "
alias tarpipe="tar cvf - . | ( cd \!* ; tar xvf - )"
echo -n "tarpipe, "
alias pgrep="ps -ef|egrep -v -i egrep|grep -i"
echo -n "pgrep, "
alias rootdig="dig @l.gtld-servers.net ns"
echo -n "rootdig, "
alias arindig="dig @ARROWROOT.ARIN.NET ns"
echo -n "arindig, "
alias cwdig="dig @ns.cw.net ns"
echo -n "cwdig, "
alias sprintdig="dig @ns1-auth.sprintlink.net ns"
echo -n "sprintdig, "
alias seekup="scp -v ${_rootCopyHost}:~/.bash_profile ~"
echo -n "seekup, "

# need one final echo
echo "done."

echo "Setting aliases to lower process priority (nice @ +19): "
alias rar="nice -n 19 $(which rar)"
echo -n "rar, "  
alias make="nice -n 19 $(which make)"
echo -n "make, "
alias killGnome="bonobo-slay; oaf-slay; pkill -9 oafd; pkill -9 gconf; pkill -9 bonobo; pkill -9 wombat; pkill -9 esd"
echo -n "killGnome, "
echo "done."


# This is a long story, but I don't think host(8) is the best option at the moment
case `uname` in
	Linux*)
		alias nslookup="host"	
esac	

# PART 3 -- GENERAL SETTINGS
echo "Part 3: General Settings..."


echo "Setting unmask value..."
umask 077

# print out nice stuff to keep you updated - top command sysV oriented - BSD version available in notes

echo "Disabling write(1) messages..."
# PINE cores enough on its own without the help of TTY crap
mesg n

# special logout script other than .bash_logout
trap '$HOME/.sh_logout; exit 0' EXIT

#Stop the slaughter!! Limit core files.
echo "Disabling core files..."
#ulimit -c 0

#Lastly and most importantly, source your local .bash_profile_local
if [ -f ~/.bash_profile_local ]; then
	echo "Source'ing local bash profile..."
	source ~/.bash_profile_local
else
	echo "No local Bash profile to source..."
fi

# PART 4: Advanced BASH Settings
echo "Part 4: BASH Settings (readline,shopt,)..."
echo 'Legacy "set" options....'
echo "Enabling EMACS CLI Edit Mode..."
#set -o emacs
set -o vi
echo "Enabling EOF Exit..."
#set -o ignoreeof
echo "Disabling file clobber via I/O redirect..."
set -o noclobber
#set -o noglob
echo "Enabling file globbing..."
#set -o nounset

# MORE - ADJUST LATER
## allexport   
## braceexpand  
## errexit       
## hashall        
## histexpand  
## keyword      
## monitor       
## noclobber      
## noexec  
## noglob   
## notify    
## nounset    
## onecmd      
## physical     
## privileged 
## verbose     
## xtrace       
## history       
## ignoreeof     
## interactive-comments 
## posix  
## emacs   
## vi       

echo 'Newer "shopt" Options...'
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -s checkwinsize
shopt -s cmdhist
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extglob
shopt -u histreedit
shopt -u histappend
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -u mailwarn
shopt -u nocaseglob
shopt -u nullglob
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath

echo "Mail options..."
export MAILCHECK=10
echo "Setting new mail check interval to 10 seconds..."
export MAIL=/var/mail/lavalamp
export MAILPATH=$MAIL
echo "Setting mailbox path to $MAILPATH ..."

echo "History options..."
echo "Disabling duplicate history entries..."
export HISTCONTROL=ignoreboth

export HISTIGNORE=""
echo "Setting history ignore pattern to $HISTIGNORE ..."

export HISTFILE=~/.bash_history
echo "Setting command history file to $HISTFILE ..."

export HISTFILESIZE=750000
echo "Setting history database file size to $HISTFILESIZE ..."
export HISTSIZE=750000
echo "Setting history database memory size to $HISTSIZE ..."

echo "Setting FCEDIT to match EDITOR..."
export FCEDIT=$EDITOR

# PART 5
echo "Part 5: 3rd Party Utils..."
echo "Setting CVS Flags (NOTE: check ~/.cvsrc)..."
export CVS_OPTIONS="-z0 -t"


# Print a summary...
echo "Resetting terminal..."
clear
# reset $TERM

echo "########## SUMMARY REPORT ##########"
echo "# Hostname	: $(hostname -s)"
echo "# Environment	: $(uname -s)"
echo "# Release 	: $(uname -r)"
echo "# Revision	: $(uname -v)"
echo "# Architecture	: $(uname -p)"
echo "# Stepping	: $(uname -m)"
echo "# Platform	: $(uname -i)"
echo "# BASH Version	: $BASH_VERSION"
echo "# UMASK		: $(umask)"
echo "# Terminal	: $TERM"
echo "# Editor  	: $EDITOR"
setUpX11
#echo "# X/11 Display	: $DISPLAY"
echo "# Blocksize	: $BLOCKSIZE"
echo "# Quota(blocks)	: "
echo "# Usage(blocks)	: "
echo "####################################"
#echo ""
#echo "####################################"
#echo "####  Top CPU usage processes: #####"
#echo "####################################"
#top -d 2 | col -b | head -n 10 | tail -4
echo "####################################"
echo "######### Current Users  ###########"
echo "####################################"
w
echo "-------------------------------------------------------------------------------"
who
echo "-------------------------------------------------------------------------------"
finger

# clean up stale caches (might screw w/ other shells)
#find ~ -name ".curDirDiskUsage" | xargs rm

# DO NOT EDIT BELOW THIS POINT -- GNU RCS REVISION LOG FOLLOWS
#
# $Log: .bash_profile,v $
# Revision 1.10  2002/12/24 01:50:21  lavalamp
# added process list and...disk usage w/ smart caching to PS1 -lava
#
# Revision 1.9  2002/12/23 21:47:47  lavalamp
# whatever...do't remember -lava
#
# Revision 1.8  2002/12/11 22:03:01  lavalamp
# more cflags ldflags changes
# yay for broken toolchains -lava
#
# Revision 1.7  2002/12/11 20:09:19  lavalamp
# add PKG_CONFIG_PATH -lava
#
# Revision 1.6  2002/12/11 20:04:43  lavalamp
# whatever =/
#
# Revision 1.5  2002/03/24 05:04:58  lavalamp
# finally did my X/11 code, just needed to check some env's, that's all -lava
#
# Revision 1.4  2002/03/12 04:15:27  lavalamp
# More customization -- enough for now -lava
#
# Revision 1.3  2002/03/11 07:23:32  lavalamp
# More cosmetic fixes -lava
#
# Revision 1.2  2002/03/11 02:57:21  lavalamp
# new fixes -lava
#
# Revision 1.1  2002/03/11 01:52:13  lavalamp
# intial checkin
#
#