#!/bin/bash # # .zshrc/.bashrc - zsh/bash configuration # # written by Jason Robert Carey Patterson # # # special shell settings, must come first # case "$0" in *zsh*) unset HISTFILE setopt HISTIGNOREDUPS setopt NONOMATCH setopt INTERACTIVECOMMENTS ZLE_REMOVE_SUFFIX_CHARS=" \t\n;" ZLE_SPACE_SUFFIX_CHARS="|&" ;; *bash*) if [ -z "$PS1" ]; then return; fi unset HISTFILE HISTCONTROL=ignoredups ;; esac # # check for unknown TERM # if [ -z "$TERM" -o ! -r /usr/share/terminfo/*/$TERM \ -a ! -r /lib/terminfo/*/$TERM \ -a ! -r /usr/lib/terminfo/*/$TERM \ -a ! -r /usr/share/lib/terminfo/*/$TERM ] 2>/dev/null; then export TERM=xterm fi # # prompt & window title # case "$0" in *zsh*) PS1="%(!.#.$) " case $TERM in *xterm* | *screen* | *tmux*) precmd() { print -Pn "\e]0;%m:%40<<%~%<<\a"; } ;; esac ;; *bash*) if [ "`id | sed -e 's/^[^0-9]*//' -e 's/[^0-9].*//'`" = "0" ]; then PS1='# ' else PS1='$ ' fi case $TERM in *xterm* | *screen* | *tmux*) PS1="\033]0;\h:\w\007$PS1" ;; esac ;; esac ssh_cmd="`which ssh`" ssh() { printf "Connecting to $*...\033]0;$*\007\n"; $ssh_cmd "$@"; } # # prefer plain C locale in shells for consistency between systems # unset LANG unset LANGUAGE for loc in `env | grep LC_ | sed -e 's/=.*//'`; do unset $loc; done unset loc # # general env vars # if [ -d /usr/local/bin ]; then export PATH="/usr/local/bin:`echo \"$PATH:\" \ | sed -e 's!/usr/local/bin:!!g' -e 's/:$//'`" fi if [ -d /usr/local/man ]; then export MANPATH="/usr/local/man:`echo \"$MANPATH:\" \ | sed -e 's!/usr/local/man:!!g'`" elif [ -d /usr/local/share/man ]; then export MANPATH="/usr/local/share/man:`echo \"$MANPATH:\" \ | sed -e 's!/usr/local/share/man:!!g'`" fi if which vim &>/dev/null; then export EDITOR=vim alias vi=vim else export EDITOR=vi alias vim=vi fi if which less &>/dev/null; then export PAGER=less alias more=less else export PAGER=more alias less=more fi case "$DISPLAY" in :[0-9]* | [a-zA-Z0-9]*:[0-9]* ) ;; *) if [ ! -r "$DISPLAY" ]; then tty=`tty | sed -e 's!/dev/!!'` # must pipe grep into awk due to tricky var sub in backquotes export DISPLAY=`who | grep " $tty " | awk '{ print $6 }' \ | tr -d '()'`:0 unset tty fi ;; esac # # general aliases # alias ls="ls -p" alias gdb="gdb -q" # # Clang/LLVM latest # clangllvm="`echo /opt/clang+llvm*`" if [ -d "$clangllvm/bin" -a \ -z "`echo \"$PATH\" | grep \"$clangllvm/bin\"`" ]; then export PATH="`echo \"$PATH\" \ | sed -e \"s!/usr/bin!$clangllvm/bin:/usr/bin!\"`" export MANPATH="$MANPATH:$clangllvm/share/man:" fi unset clangllvm # # Android SDK # androidsdk="`echo /opt/android-sdk*`" if [ -d "$androidsdk/tools/bin" -a \ -z "`echo \"$PATH\" | grep \"$androidsdk/tools/bin\"`" ]; then export PATH="$PATH:$androidsdk/tools/bin" elif [ -d "$androidsdk/tools" -a \ -z "`echo \"$PATH\" | grep \"$androidsdk/tools\"`" ]; then export PATH="$PATH:$androidsdk/tools" fi if [ -d "$androidsdk" ]; then if [ -d /Local/Build ]; then export GRADLE_USER_HOME=/Local/Build/Gradle elif [ -d $HOME/Local/Build ]; then export GRADLE_USER_HOME=$HOME/Local/Build/Gradle fi fi unset androidsdk # # system-specific stuff # case `uname` in Darwin) # macOS # general aliases alias top="top -s3 -u -stats pid,user,vsize,rsize,cpu,threads,time,command" alias tar="COPYFILE_DISABLE=true tar" # don't tar resource forks & xattrs # CodeWarrior mwvars="`echo /Applications/Metrowerks\ CodeWarrior*/Other\ Metrowerks\ Tools/Command\ Line\ Tools/mwvars`" if [ -r "$mwvars" ]; then export MWSDK=/Developer/SDKs/MacOSX10.4u.sdk TMPDIR="${TMPDIR:-/tmp}" csh -c "source '$mwvars' bsd '$MWSDK' && env | grep '^MW' \ | sed -e 's/^/export /' \ -e 's/=/=\"/' -e 's/$/\"/'" >"$TMPDIR/mwvars.$$" . "$TMPDIR/mwvars.$$" rm -f "$TMPDIR/mwvars.$$" fi unset mwvars # GNU make export MAKEFLAGS="-j`sysctl -n hw.ncpu`" ;; Linux) # some Linux distros have unusual umask defaults umask 022 # avoid broken zsh arrow-key bindings case "$0" in *zsh*) setopt NOGLOBALRCS ;; esac # general aliases alias gzcat=zcat alias pstree="pstree -Gul" # Intel icc icc="`echo /opt/intel/Compiler/*/*`" if [ -d "$icc/bin" -a \ -z "`echo \"$PATH\" | grep \"$icc\"`" ]; then if [ "`uname -m`" = "x86_64" ]; then export PATH="$PATH:$icc/bin/intel64" else export PATH="$PATH:$icc/bin/ia32" fi export MANPATH="$MANPATH:$icc/man/en_US:" fi unset icc # GNU make export MAKEFLAGS="-j`grep -c processor /proc/cpuinfo`" ;; *BSD*) # general env vars export PATH="`echo \"$PATH\" | sed -e 's!:/home/[^:]*!!g'`" export MANPATH="$MANPATH:/usr/share/man" # GNU make alias make=gmake export MAKEFLAGS="-j`sysctl -n hw.ncpu`" ;; SunOS) # Solaris # general env vars export PATH="$PATH:/usr/sbin:/usr/ccs/bin:/usr/java/bin:/usr/sfw/bin" export MANPATH="$MANPATH:/usr/share/man:/usr/java/man:/usr/sfw/man" # general aliases alias top="top -s3" alias pstree=ptree if ! which sudo &>/dev/null; then alias sudo=pfexec; fi # system compilers sunstudio="`echo /opt/[ds][eou][vln]*studio*`" if [ -d "$sunstudio/bin" -a \ -z "`echo \"$PATH\" | grep \"$sunstudio/bin\"`" ]; then export PATH="$PATH:$sunstudio/bin" export MANPATH="$MANPATH:$sunstudio/man:" fi unset sunstudio # GNU make alias make=gmake export MAKEFLAGS="-j`psrinfo | wc | awk '{ print \$1 }'`" ;; esac # # final cleanup # export PATH="`echo \"$PATH\" | sed -e 's/::*/:/g'`" export MANPATH="`echo \"$MANPATH\" | sed -e 's/::*/:/g'`"