#!/bin/bash # THIS IS MY BASHRC # Prompt setup test `uname` = SunOS && export HOSTNAME=`uname -n` || export HOSTNAME=`hostname -s` PS1= PS1=$PS1"\[\033]2;\u@$HOSTNAME:\w\007\]" # change xterm title test $UID = 0 && PS1=$PS1"\[\033[31;1m\]" # red on black PS1=$PS1"\u" # username PS1=$PS1"\[\033[33;1m\]@$HOSTNAME:" # yellow on black @host PS1=$PS1"\[\033[34;1m\]\w" # blue on black pwd PS1=$PS1"\[\033[0m\]\\$" # white on black $ HISTFILESIZE=100000 HISTSIZE=1000 INTERACTIVE=0 LOGIN=0 NUMINITSTATUSES=0 ulimit -c 0 # no core dumps # FIXME: only on maxwell if [ "$DISPLAY"x = x ]; then export DISPLAY=:0.0; fi (echo $- | grep i &> /dev/null) && (echo $1 $2 $3 $4 | grep -v \\w &>/dev/null) && INTERACTIVE=1 (echo $0 | grep "^-" &> /dev/null) && LOGIN=1 (echo $- | grep "i" &> /dev/null) || LOGIN=0 (shopt login_shell | grep 'on' &>/dev/null) && LOGIN=1 # Find Java test -e /Library/Java/Home && export JAVA_HOME=/Library/Java/Home test -e /usr/local/jdk-1.1.8 && export JAVA_HOME=/usr/local/jdk-1.1.8 test -e /usr/jdk1.2 && export JAVA_HOME=/usr/jdk1.2 test -e /usr/jdk1.3 && export JAVA_HOME=/usr/jdk1.3 test -e /usr/lib/j2sdk1.3 && export JAVA_HOME=/usr/lib/j2sdk1.3 test -e /opt/java-1.3 && export JAVA_HOME=/opt/java-1.3 test -e /usr/lib/j2se/1.3 && export JAVA_HOME=/usr/lib/j2se/1.3 test -e /usr/lib/j2se/1.4 && export JAVA_HOME=/usr/lib/j2se/1.4 test -e /usr/lib/j2se/1.5 && export JAVA_HOME=/usr/lib/j2se/1.5 test -e /usr/java/jdk1.5.0_03/jre/ && export JAVA_HOME=/usr/java/jdk1.5.0_03/ test -e /usr/lib/jdk1.5.0_03/jre/ && export JAVA_HOME=/usr/lib/jdk1.5.0_03/ test -e /usr/java/jdk1.5.0_06/jre/ && export JAVA_HOME=/usr/java/jdk1.5.0_06/ export PATH=~/bin:~/.bin:$JAVA_HOME/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:$PATH:$JAVA_HOME/bin:/usr/X11R6/bin/ # for BWRC export PATH=$PATH:/usr/cluster/bin/ # setxkbmap -option ctrl:swapcaps test -e /tools/flexlm/flexlm.sh && source /tools/flexlm/flexlm.sh export EDITOR="emacs -nw" export CVSEDITOR="emacs -nw" export CVS_RSH=ssh export TERM=xterm-color export CLICOLOR=yes export LD_LIBRARY_PATH=/usr/gcc/lib:$LD_LIBRARY_PATH:/usr/local/lib/:~/lib:/usr/local/gnu/lib export EMAIL=adam@megacz.com export TEXINPUTS=.:$HOME/.texinputs: export TEXFONTS=.:$HOME/.texinputs: #export XILINX=/usr/local/xilinx export XILINX=/opt/ISE81 export PATH=$PATH:$XILINX/bin/lin/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XILINX/bin/lin/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/EDK81/bin/lin:/opt/ISE81/bin/lin export PATH=$PATH:/Library/OpenAFS/Tools/bin/ export PATH=$PATH:/Library/OpenAFS/Tools/etc/ export PATH=$PATH:/proj/async/cad/linux/bin/ export PATH=/usr/local/bin:$PATH export PATH=/opt/local/sbin:$PATH export PATH=/opt/local/bin:$PATH export PATH=$PATH:/opt/ISE81/bin/lin/ # for afs.rc export PATH=$PATH:/Library/OpenAFS/Tools/root.client/usr/vice/etc/ # for 61c inst cluster export PATH=$PATH:/usr/sww/bin test `hostname` = nova.CS.Berkeley.EDU && export TERM=vt100 test `hostname` = argus.EECS.Berkeley.EDU && export TERM=vt100 export SCALA_HOME=/opt/local/share/scala-2.8 # for bear test -e ~odean/scala-2.8.0/ && export PATH=~odean/scala-2.8.0/bin:~odean/bin/:$PATH #test -e ~odean/jdk1.6.0_17/ && export JAVA_HOME=~odean/jdk1.6.0_17/ test -e ~odean/jdk1.6.0_18/ && export JAVA_HOME=~odean/jdk1.6.0_18/ test -e ~odean/scala-2.8.0/ && export SCALA_HOME=~megacz/scala-2.8.0/ # for SUN # this needs to come BEFORE /usr/bin export PATH=/import/async/cad/linux/lib/jdk1.6/bin/:/proj/async/cad/linux/bin/:$PATH # for MacPorts Scala export PATH=/opt/local/share/scala-2.7/bin/:$PATH export PATH=/opt/local/share/scala-2.8/bin/:$PATH export GIT_AUTHOR_NAME='Adam Megacz' export GIT_COMMITTER_NAME='Adam Megacz' backup() { # backups cat > $HOME/.backup.exclude << EOF + / - *.wav - *.WAV - *.mp3 - *.m4a - *.M4A - *.MP3 - *.mpeg - *.MPEG - *.mpg - *.MPG - *.asf - *.ASF - *.mov* - *.m4v - *.M4V - *.MOV* - *.avi - *.AVI - *.wmv - *.WMV - *.virtualpc - *.vob - *.VOB - /dev/** - /afs/** - /net/** - **/.Spotlight*/** - /mnt*/** - /Network - /proc - /sys - /Volumes - /Users/megacz/docs/iTunes/TV*/** - /Users/megacz/.Trash/** - /Users/megacz/docs/iTunes/Podcasts/** - /private/var/vm/** - /var/cache/** - /var/afs/** - /.fseventsd/** - /vol/** - /vol+/** - /old/** - /vol/afs/** - /vol/backups/** - /vol/incrementals/** - /scratch/** - /private/var/tmp/ - /private/var/vm/ - *.sparseimage - /Users/*/Library/Caches/** - /Users/*/.downloads/** - /Users/*/proj/docudesk/**/build/** - /Users/*/proj/docudesk/**/prefix/** - /Users/*/proj/docudesk/**/gcc*/** - /Users/*/Library/vmware/** - /Users/*/Library/Parallels/** - /Users/*/.mldonkey/** - /var/tmp/** - /tmp/** - /vicep*/** - /private/var/db/openafs/** - /private/var/folders/** - /Users/megacz/Library/Xilinx-Win32/** - /opt/local/var/macports/** - **/quine-encrypted.dmg - /Developer/** - /Library/Caches/** - /System/Library/Caches/** - /Users/*/Library/Caches/** - /Users/megacz/docs/vms/** - /opt/local/var/cache/** - /opt/local/var/tmp/** EOF # to get HFS attributes; use '/System/Library/CoreServices/FixupResourceForks /' (recursive) to restore # test `uname` == Darwin && /Developer/Tools/SplitForks -v / # test `uname` == Darwin && /Developer/Tools/SplitForks -v /Users/megacz/ DAY=`date +%A` BACKUP_HOST=goliath.megacz.com BACKUP_ROOT=/vol test $HOSTNAME = goliath && BACKUP_HOST=gentzen.megacz.com test $HOSTNAME = goliath && BACKUP_ROOT=/vol EXTRA="--backup --backup-dir=$BACKUP_ROOT/backups/incrementals/$HOSTNAME/$DAY" test $HOSTNAME = chaitin.megacz.com && EXTRA="$EXTRA --bwlimit=1024" test $HOSTNAME = quine && EXTRA="$EXTRA --hfs-mode=appledouble" RSYNC_OPTS="-avuze ssh --exclude-from=$HOME/.backup.exclude --ignore-errors --stats --progress --delete $EXTRA" test $HOSTNAME = goliath || ssh root@$BACKUP_HOST "mkdir -p $BACKUP_ROOT/backups/incrementals/$HOSTNAME/$DAY; rm -rf $BACKUP_ROOT/backups/incrementals/$HOSTNAME/$DAY" SOURCE=/ TARGET=root@$BACKUP_HOST:$BACKUP_ROOT/backups/$HOSTNAME test $HOSTNAME = goliath && EXTRA="" echo \ "nice -n 19 rsync $RSYNC_OPTS $SOURCE $TARGET 2>&1 | tee /tmp/backup || \ (tail -n 1000 /tmp/backup | mail -s "backup failed" adam@megacz.com)" nice -n 19 rsync $RSYNC_OPTS $SOURCE $TARGET 2>&1 | tee /tmp/backup || \ (tail -n 1000 /tmp/backup | mail -s "backup failed" adam@megacz.com) } # must make sure this runs... cd ~ test -e ~/.bash_profile || (cd ~; ln -sf .bashrc .bash_profile) rm -f {Library,Movies,Music,Pictures,Public,Documents}/.localized rm -rf Documents/RDC\ Connections/ test -e ~/Library/.git && ((cd ~/Library; plutil -convert xml1 Safari/LastSession.plist; git add -u .; git commit -m x) &>/dev/null) if [ "$LOGIN"x = "1x" ]; then mkdir -p ~/.ssh chmod 700 ~/.ssh touch ~/.emacs.local cat > ~/.emacs <<\EOF ;; DO NOT EDIT THIS -- BASHRC WILL OBLITERATE IT (define-key global-map "\C-h" 'delete-backward-char) (setq-default vc-handle-cvs nil) (setq-default basic-indent 4) (setq-default text-basic-indent 4) (setq-default c-basic-indent 4) (setq-default c++-basic-indent 4) (setq-default java-basic-indent 4) (setq-default indent-tabs-mode nil) (setq-default transient-mark-mode t) (setq debian-changelog-full-name "Adam Megacz" debian-changelog-email-address "adam@megacz.com") (setq version-control 'never) (setq-default inhibit-eol-conversion t) (menu-bar-mode (- 1)) (setq column-number-mode t) (define-key global-map "\C-x\C-h" 'help-command) (put 'eval-expression 'disabled nil) (display-time) (setq default-major-mode 'text-mode) (setq scroll-step 1) (define-key global-map "\C-x\C-a" 'fill-region-as-paragraph) (setq make-backup-files nil) (put 'upcase-region 'disabled nil) (put 'downcase-region 'disabled nil) (add-hook 'text-mode-hook 'turn-off-auto-fill) (setq auto-fill-mode 0) ;; DO NOT EDIT THIS -- BASHRC WILL OBLITERATE IT (load-file "~/.emacs.local") EOF cat > ~/.ssh/config <<\EOF CheckHostIP no StrictHostKeyChecking no ServerAliveInterval 30 GSSAPIKeyExchange no Host mute HostName craptop.dyndns.org Port 3333 User root ForwardX11Trusted yes ForwardAgent yes Host bear Hostname goliath.megacz.com Port 3333 User megacz ControlMaster auto ControlPath /tmp/%r@%h:%p Host impostor HostName craptop.dyndns.org Port 3339 User root ForwardX11Trusted yes ForwardAgent yes Host presburger HostName craptop.dyndns.org Port 3340 User root ForwardX11Trusted yes ForwardAgent yes Host gift HostName craptop.dyndns.org Port 3341 User root ForwardX11Trusted yes ForwardAgent yes Host shannon HostName craptop.dyndns.org Port 2222 ForwardX11Trusted yes ForwardAgent yes #Host simmons # HostName 92.243.28.2 # Port 11112 # ForwardX11Trusted yes # User am77536 # ForwardAgent yes Host simmons HostName simmons.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host gandi HostName 92.243.28.2 ForwardX11Trusted yes User karlschrunk ForwardAgent yes Host iphone HostName 192.168.1.190 User root Host sheevaplug HostName megacz.com Port 11111 ForwardX11Trusted yes User root ForwardAgent yes Host appletv HostName craptop.dyndns.org ForwardX11Trusted yes User frontrow ForwardAgent yes Host vm HostName localhost Port 2222 ForwardX11Trusted yes User root ForwardAgent yes Host ivans HostName megacz.com Port 2224 ForwardX11Trusted yes User megacz ForwardAgent yes Host bee2 HostName megacz.com Port 2223 ForwardX11Trusted yes User root ForwardAgent yes Host tgo HostName tgo.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host widemac HostName widemac.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host frehley HostName frehley.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host criss HostName criss.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host stanley HostName stanley.sfbay ForwardX11Trusted yes User am77536 ForwardAgent yes Host gentzen HostName gentzen.megacz.com ForwardX11Trusted yes GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardAgent yes GSSAPIKeyExchange no Host goliath HostName goliath.megacz.com ForwardX11Trusted yes GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardAgent yes GSSAPIKeyExchange no Host cuda.megacz.com HostName cuda.megacz.com ForwardX11Trusted yes GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardAgent yes GSSAPIKeyExchange no Host megacz.com HostName gentzen.megacz.com ForwardX11Trusted yes GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardAgent yes GSSAPIKeyExchange no Host gerrit.openafs.org User megacz IdentityFile ~/.ssh/id_rsa Port 29418 GSSAPIKeyExchange no EOF (ssh -V 2>&1 | grep 3.9p1 >/dev/null) && (grep -v GSSAPI .ssh/config > .ssh/config+; mv .ssh/config+ .ssh/config) cat > ~/.gdbinit <<\EOF handle SIGXCPU nostop noprint handle SIGPWR nostop noprint EOF test $HOSTNAME = "skolem" && test $USER = "megacz" && MASTER=1 test $HOSTNAME = "skolem.megacz.com" && test $USER = "megacz" && MASTER=1 if [ "$MASTER"x = "1x" ]; then sudo rmdir Library Movies Music Pictures Public Documents &>/dev/null sudo find /cores -not -type d -mtime +10 -exec rm -f {} \; test .bashrc -nt .bashrc.megacz.com && (echo "uploading new bashrc..."; cp .bashrc ~/www/bashrc) touch .bashrc.megacz.com alias soe='java -ea -Xss2m -XX:MaxPermSize=128m -Xmx1000m -jar ~/proj/electric/srcj/electric.jar -debug' else #echo "downloading new bashrc..." curl -O http://www.megacz.com/bashrc && (grep 'THIS IS MY BASHRC' bashrc &>/dev/null) && mv bashrc .bashrc chmod +x .bashrc touch .ssh/authorized_keys; grep "megacz@feynman" .ssh/authorized_keys &>/dev/null || (\ echo -n "ssh-dss AAAAB3NzaC1kc3MAAACBAPBdb1WmqoKMvYUwMtSh5nevhLxWz9SYowN+OJTUBRQJrrK2FgGnPiEOvDz4b7cGY1J" >> .ssh/authorized_keys; \ echo -n "4HHy+HQEJoOXR8Yybmk73K6l4mpqSKQ42OLYAy5J218fEfEBg/fWaKXppMfRWo3Vod7MWicWEdvYdCOoeVc1y20Os83hidd" >> .ssh/authorized_keys; \ echo -n "aPTtNxeCsbAAAAFQDppCStHSOYe/kvYmqJkqwV6mTZvwAAAIEAqSv5q13X6Vw4SdPKy1tKdIX4qsgQ/QshRi0fjB5n/8wHH" >> .ssh/authorized_keys; \ echo -n "wt6AvEr+F6yZWuUPfxvcjCWV9TCyN7F4fBEpzNpr6YOO//KcnSnbJtofkSK6ot32DXAHB3G/KYEXoObwPW7yodYtm6LWk7v" >> .ssh/authorized_keys; \ echo -n "LusBM5/cUJM8cNIiA+RSNiSKQEjrLfoAAACAb9j8fNa1qIsSma2/tlLBoWVqMs7dCIBtlEsA9Vj3Tw6YGCPdPXmPXymKoBe" >> .ssh/authorized_keys; \ echo -n "AVw3FN/kI2cMQTQHNSKZ5rnkt9uSABzimKfmS6LAwxMPUNNoKMW4z51EPdp8hr/+UrFWt+zJ6cs0Bl1qjjGVoXm3pVP8cGt" >> .ssh/authorized_keys; \ echo "FxpXsB9UmYo+4Ghgo= megacz@feynman" >> .ssh/authorized_keys ) test -e .ssh2 || mkdir -m 700 .ssh2 grep "megacz.key" .ssh2/authorization &>/dev/null || (echo "key=megacz.key" >> .ssh2/authorization) test -e .ssh2/megacz.key || (\ echo '---- BEGIN SSH2 PUBLIC KEY ----' > .ssh2/megacz.key; \ echo 'Comment: "1024-bit RSA, converted from OpenSSH by megacz@maxwell"' >> .ssh2/megacz.key; \ echo 'AAAAB3NzaC1yc2EAAAABIwAAAIEAvkChCO9oS2faNlpPtmPXn4k7Y7wV96K7hO2+rqLm6L' >> .ssh2/megacz.key; \ echo '9KPgkuV72e/sXlsMW+kb5U3OJbqYJvDkxlYv+qkO/uvMTxTJoXhBVbPk+Z6dFd7yc8DWHi' >> .ssh2/megacz.key; \ echo 'KE85I6BP7nN93sGcC4LshEnXO+8qJ0oqrJM+GTz9fcXls9Nxpv5mJTkJMYM=' >> .ssh2/megacz.key; \ echo '---- END SSH2 PUBLIC KEY ----' >> .ssh2/megacz.key ) fi stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z" hupcl ixon ixoff tostop #stty erase ^? echo -e "set horizontal-scroll-mode On\n" > ~/.inputrc mkdir -p .ssh; chmod 700 .ssh #eval `ssh-agent -s` #trap "kill $SSH_AGENT_PID" 0 fi removerc() { update-rc.d -f $1 remove update-rc.d -f $1 stop 99 0 1 2 3 4 5 6 S . } tcp() { mkdir -p $2 && \ tar -C $1 --one-file-system -cpf - . | \ tar -C $2 -xvpf - } lt() { test -e megacz.bib || ( \ grep -B 999999 'BibDesk Static Groups' ~/docs/bibdesk/bibdesk.bib | \ grep -v 'BibDesk Static Groups' > megacz.bib) find ~/docs/papers \ -newer ~/.texinputs/megacz.bib \ -not -type d \ -not -name Library.papers \ | grep . \ && open ~/bin/papers-export/papers-export.app latexmk -f -pdf $1.tex && latexmk -c -pdf $1.tex && open /Applications/Preview.app rm megacz.bib } removewhitelist() { echo sudo sqlite3 /var/mail/db/whitelist.sqlite "delete from whitelist where email='$1';" } if [ $INTERACTIVE = "1" ]; then INPUTRC=~/.inputrc alias "ls=ls -F" alias vlc='open -a /Applications/VLC.app/' alias console='ssh -p 7001 ap2914483130@console.megacz.com' alias "x=java -cp $HOME/xwt/HEAD/bin org.xwt.Main " alias "r=nice -n 19 rsync -e ssh -a --progress" alias "j13=/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Commands/java" alias "e=emacs" alias "l=ls -FH" alias "c=clear" alias "p=ps aux" alias "pg=ps aux | grep" alias "sshwin=ssh -p 2300 --disable-encryption Adam\ Megacz@localhost" alias fixpackages='apt-get update && apt-get install emacs20 ssh' alias sk=synckazaa alias mkps='for A in *.jpeg *.jpg; do jpeg2ps -b "$A" > "$A".ps; done; rm \*.jpeg.ps \*.jpg.ps' alias mkpdf='echo quit | gs -dEPSFitPage -sOutputFile=out.pdf -sDEVICE=pdfwrite -dNOPAUSE *.ps' alias rmspace='for A in *\ *; do mv "$A" `echo $A | sed s_\ __g`; done' alias addzero='for A in *\ [0-9].jpeg; do mv "$A" `echo $A | sed "s_ _0_"`; done' alias dupe='for A in *; do cp $A `echo $A | sed s_.jpeg_b.jpeg_`; mv $A `echo $A | sed s_.jpeg_a.jpeg_`; done' alias login='kinit -l 1d megacz@MEGACZ.COM && (aklog -c megacz.com; aklog -c research.cs.berkeley.edu)' alias vlc='open -a /Applications/VLC.app' # this accelerates ssh logins since it doesn't check the DNS # for KDC's (which are never there or relevant) # alias ssh='KRB5CCNAME=bogus ssh' # alias scp='KRB5CCNAME=bogus scp' alias rs='rsync -are ssh --progress --verbose' alias oar='sudo /Library/StartupItems/OpenAFS/OpenAFS stop; sudo /Library/StartupItems/OpenAFS/OpenAFS start; login' alias erase-dvd='dvd+rw-format -lead-out /dev/hdc' alias remove-rc.d='removerc()' alias rdvd='r ~/Desktop/*.dvd /afs/megacz.com/goliath/media/dvds/' alias unison_pup='cd ~/proj/pup.berkeley.edu; unison ssh://pup@ocf.berkeley.edu/public_html/staff/ ./' alias updateslocate='slocate -u -e /afs -e /Network -e /Volumes -e /net -e /home -v' alias afsrc='/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.rc' alias compile_for_appletv='CC=/usr/bin/gcc-4.0 CFLAGS="-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" ./configure' alias gnus='ssh -t megacz.com emacs --no-splash -nw -f gnus' alias ee='emacs --no-splash --no-site-file -nw' alias rsa-shannon='java -jar ~/bin/rsaclient.jar root@craptop.dyndns.org' alias rsa-gentzen='java -jar ~/bin/rsaclient.jar root@gentzen-sp.megacz.com' alias bkillall='bjobs | grep megacz | sed "s_ .*__" | xargs -I{} bkill -s9 {}' fi #test $HOSTNAME = "quine" && test $USER = "megacz" && pgrep 'Adobe Updater' && kill -9 `pgrep 'Adobe Updater'` #test $HOSTNAME = "quine.megacz.com" && test $USER = "megacz" && pgrep 'Adobe Updater' && kill -9 `pgrep 'Adobe Updater'`