# $Id$ #echo .env if [ ${UID:-65535} -gt 0 ] && [ "${LOGNAME:-$USER}" = "$(id -ng)" ] ; then # usergroups umask 002 else umask 022 AUTO_UMASK=yes fi # Environment #export BLOCKSIZE=k export EDITOR=vi case $HOSTNAME in *.*) HOSTNAME=`echo $HOSTNAME | cut -f1 -d.` ;; esac export HOSTNAME export PAGER=less export PERL_RL=Zoid : ${USER:=$LOGNAME} type -p lesspipe > /dev/null && export LESSOPEN='|lesspipe %s' [ -z "$MAIL" ] && [ -f /var/mail/$USER ] && export MAIL="/var/mail/$USER" # MAIL is unset on NetBSD # check whether we run interactively [ "$PS1" ] || return [ "$BASH_VERSION" ] || return #echo ".env: interactive" if [ "$TERM" = "rxvt-256color" ] && [ ! -f "/lib/terminfo/r/rxvt-256color" ] && [ ! -f "/usr/share/terminfo/r/rxvt-256color" ] ; then TERM="rxvt-unicode" fi export GREP_OPTIONS="-d skip --exclude=*.svn-base --exclude tags --exclude *~ --color=auto" # Aliases # check for GNU utils if cp --version > /dev/null 2>&1 ; then alias cp='cp -iv' alias mv='mv -iv' alias rm='rm -iv' case "$TERM" in linux*|*vt100*|cons25|xterm*|rxvt*|screen*|cygwin) alias ls='ls -F --color=auto' ;; *) alias ls='ls -F' ;; esac else alias cp='cp -i' alias mv='mv -i' alias rm='rm -i' alias ls='ls -F' fi alias -- -='popd && ps1_pwd && ls' alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' cal () { if [ "$1" ] ; then ncal -b "$@" ; else ncal -b3 ; fi } alias d=date alias diffstat='diffstat -p1 -r2' alias 'dpkg-buildpackage'='dpkg-buildpackage -rfakeroot -us -uc -i' alias 'dpkg-source'='dpkg-source -i' alias f=finger alias gf=sl alias j='jobs -l' alias l='ls -al' alias m='mutt' alias man='man -LC' alias md=mkdir alias o='$PAGER' alias ping='ping -n' alias tree='tree -ACF' alias r='screen -R' alias rd=rmdir alias rehash='hash -r' #alias vim='vim --servername VIM' alias which='type -p' alias X='mesg n; exec ssh-agent startx > ~/.xsession-errors 2>&1' #alias xdvi='EDITOR="vim --servername VIM --remote +%l %f" xdvi' alias y=sl # Debian alias 'dist-upgrade'="sudo apt-get dist-upgrade" alias agi="sudo apt-get install" alias agr="sudo apt-get remove" alias build-dep="sudo apt-get build-dep" alias policy="apt-cache policy" alias search="apt-cache search" alias show="apt-cache show" alias showpkg="apt-cache showpkg" alias showsrc="apt-cache showsrc" alias update="sudo apt-get update" reload () { [ -x "/etc/init.d/$1" ] && sudo "/etc/init.d/$1" force-reload ; } restart () { [ -x "/etc/init.d/$1" ] && sudo "/etc/init.d/$1" restart ; } start () { [ -x "/etc/init.d/$1" ] && sudo "/etc/init.d/$1" start ; } stop () { [ -x "/etc/init.d/$1" ] && sudo "/etc/init.d/$1" stop ; } upgrade () { if [ "$*" ] ; then set -- $(dpkg -l "$@" | grep ^ii | awk '{ print $2 }') if [ "$*" ] ; then echo "apt-get install $@" sudo apt-get install "$@" else echo "Nothing to upgrade" fi else sudo apt-get upgrade fi } # Functions # print pwd ? () { echo "pwd: $PWD" echo -n "real: "; /bin/pwd echo "stack: ${DIRSTACK[@]}" echo "umask: `umask` (auto: ${AUTO_UMASK:-no})" } # set umask depending on directory group/sgid bit auto_umask () { local dir group umask 022 if [[ `stat -c "%04a" .` == [267]* ]] ; then # sgid directory dir=`stat -c "%g" .` for group in ${GROUPS[@]} ; do [ $group -eq $dir ] && { umask 002 ; break ; } done fi } ps1_pwd () { PS1_PWD=$(echo "$PWD" | perl -pe 's,^$ENV{HOME}\b,~,; 1 while (length>35 and s,([^/]{2})[^/]+/,$1/,)') } ps1_pwd ps1_vcs_git () { local branch branch=$(git branch | sed -ne 's/^\* \(.*\)/\1/p') PS1_VCS=" git:$branch" } ps1_vcs () { unset PS1_VCS PROMPT_COMMAND if [ -d .git ] || [ -d ../.git ] || [ -d ../../.git ] || [ -d ../../../.git ] ; then PROMPT_COMMAND="ps1_vcs_git" elif [ -d .svn ] ; then local branch branch=$(LC_ALL=C svn info | sed -ne 's/^URL: .*branches\/\([^/]*\).*/:\1/p') PS1_VCS=" svn$branch" fi } ps1_vcs # cd with some nice options cd () { local cur dir d d0 arg opt OPTIND OPTERR while getopts "10nprLP" opt ; do case $opt in 1) set */ ; dir="$1" ; [ "$dir" ] || return 1 ;; 0) for dir in */ ; do : ; done ; [ "$dir" ] || return 1 ;; n) cur="../`basename "$PWD"`/" for d in ../*/ ; do [ "$d0" = "$cur" ] && { dir="$d"; break; } ; d0="$d" ; done [ -z "$dir" ] && return 1 ;; p|r) cur="../`basename "$PWD"`/" for d in ../*/ ; do [ "$d" = "$cur" ] && { dir="$d0"; break; } ; d0="$d" ; done [ -z "$dir" ] && return 1 ;; L|P) arg="-$opt" ;; esac done shift $(($OPTIND - 1)) [ "${DIRSTACK[10]}" ] && popd +10 -n > /dev/null # support "cd %1" case $1 in %*) dir="`jobs $1 | perl -ne 's/wd: ~/wd: $ENV{HOME}/; print $1 if /wd: (.*)\)/'`" ;; esac pushd $arg "${dir:-${1:-$HOME}}" > /dev/null || return $? [ "$AUTO_UMASK" ] && auto_umask ps1_pwd ps1_vcs ls } # mkdir/cd wrappers nd () { mkdir "$1" && cd "$1" ; } nv () { local nv ; nv=`nv.pl "$@"` && cd "$nv" ; } # edit variable in vi vared () { local vared vared=`mktemp /tmp/vared.XXXXXX` ( echo -n "$1="\' ; eval echo -n "\$$1" ; echo \' ) > $vared ${EDITOR:-"vi"} $vared && . $vared /bin/rm -f $vared } # untar and cd into dir unalias ttar xtar 2> /dev/null # remove system default if type -p xtar.pl > /dev/null ; then xtar () { local xtar xtar=`xtar.pl "$@"` && cd "$xtar" } else alias xtar='tar xvzf' fi # personal stuff if [[ "$USER" == cb* ]] || [ "$USER" = myon ] ; then export DEBEMAIL="myon@debian.org" export PGPKEY="6D8ABE71" export PGPKEY2="58510B5A" export PGPKEY3="12D2A7AE" fi