シェルの設定ファイル .profile他

最近使っているシェルの設定ファイルを置いておきます。このファイルはsh、pdksh、bashzshに対応しています(とはいいつつ僕はほとんどzshしか使っていませんが…)。このファイルを.profileという名前でホームディレクトリに置いて、適宜.zshrcにシンボリックリンクを張るなどして運用しています。
なお、zshの設定の中の^[は、Escに置きかえる必要があります。ご注意ください。
ファイル: .profile他

# -*- shell -*-
# ==================================
#  sh and pdksh and zsh config file
# ==================================
#
#  $Id:$
#  

stty erase ^H

export_if_exist()
{
    local realvar="$3"
    [ X"$realcmd" = X ] && realvar="$2"

    local p
    for p in `echo $PATH | tr : ' '`; do
        if [ -e "$p/$2" ]; then
            export "$1"="$realvar"
            break
        fi
    done
}

export PATH=$HOME/bin
export PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin
#export PATH=$PATH:/usr/pkg/gcc3/bin
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
export PATH=$PATH:/usr/X11R6/bin:/usr/games
export PATH=$PATH:/usr/local/bin:/usr/local/sbin

export EDITOR=vi
export PAGER=less
export_if_exist PAGER lv
export_if_exist PAGER jless
export BLOCKSIZE=K
export INPUTRC=~/.inputrc
export LANG=ja_JP.eucJP
export LC_CTYPE=ja_JP.eucJP
export LC_TIME=C
#export WWW_HOME=http://127.0.0.1/memo/
export LSCOLORS=6050202030404032346464
export CLICOLOR=true
export PERL_BADLANG=true
export CVS_RSH=ssh

#export http_proxy=http://localhost/
#export http_proxy=http://proxy02:9515/
#export ftp_proxy=http://proxy02:9515/

#export UIM_CANDWIN_PROG=uim-candwin-gtk
#export XMODIFIERS=@im=uim

HOST=`hostname -s`
PS1='$USER@$HOST(!) '
SPECIAL_PS1=true

HISTSIZE=10000
HISTFILE=~/.history

alias_if_exist()
{
    local realcmd="$3"
    [ X"$realcmd" = X ] && realcmd="$2"

    local p
    for p in `echo $PATH | tr : ' '`; do
        if [ -e "$p/$2" ]; then
            alias "$1"="$realcmd"
            break
        fi
    done
}

alias_if_exist ls colorls 'colorls -F -G'
alias ll='ls -l'
alias la='ls -la'

#alias rm='rm -i'
#alias_if_exist rm saferm
alias rm=saferm
alias mv='mv -i'
alias cp='cp -i'

alias md=mkdir
alias rd=rmdir

alias sl=ls
alias eixt=exit

alias less=$PAGER
alias df='df -m'

alias reboot='sudo reboot'
alias poweroff='sudo shutdown -p now'
alias zzz='sudo pkill pppd; sleep 3; sudo zzz'

alias xinit='xinit -- -ar1 200 -ar2 20'
alias xxinit='BIG=true \xinit -- -ar1 200 -ar2 20 -depth 16'  

alias reload='. ~/.profile'
alias config='vi ~/.profile'

alias rmbak='rm -f *~; rm -f *.bak'
alias pppd='sudo pppd call mopera0'
alias down='cd ~/0000/down'
alias rdic='rdic -x /usr/opt/eijiro/*'

alias_if_exist man w3mman
alias_if_exist refe w3mrefe
alias_if_exist ftp lftp
alias_if_exist ping gwping

STARTS="txt=less:c=gcc -ggdb -Wall"
STARTS="${STARTS}:tgz=tar zxvf:tar.gz=tar zxvf"
STARTS="${STARTS}:tbz=tar yxvf:tar.bz2=tar yxvf"
STARTS="${STARTS}:zip=unzip:lha=lha x"
STARTS="$STARTS:gif=xli:jpeg=xli"
export STARTS
export START_DEFAULT='less'

saferm()
{
    local trash=`date +$HOME/.trash/%Y%m%d`

    while [ $# -gt 0 ]; do
	case "$1" in
	    --) shift; break;;
	    -*) shift;;
	    *) break;;
	esac
    done

    if [ $# -eq 0 ]; then
	echo "usage: saferm file..."
	return 1
    fi

    /bin/mkdir -p "$trash"
    [ -d "$trash" ] || return 1

    while [ $# -gt 0 ]; do
	/bin/mv -f -- "$1" "$trash"
	shift
    done
}

mdcd()
{
    mkdir -p "$1"
    cd "$1"
}

ndir()
{
    local n=`/bin/ls | grep -e '^[0-9][0-9]*$' | sort -n | tail -1`
    [ "$n" = "" ] && n=0
    printf "%02d\n" `expr $n + 1`
}

ndcd()
{
    local dir=`ndir`
    mkdir -p $dir
    cd $dir
}

ddcd()
{
    local dir=`date +%m%d`
    mkdir -p $dir
    cd $dir
}

PS0='$ '
RPS0=
px()
{
    if [ X"$SPECIAL_PS1" = Xtrue ]; then
	unset SPECIAL_PS1
    else
	SPECIAL_PS1=true
    fi
    local tmp
    tmp="$PS1"; PS1="$PS0"; PS0="$tmp";
    tmp="$RPS1"; RPS1="$RPS0"; RPS0="$tmp";
}

if [ X"$KSH_VERSION" != X ]; then
    set -o emacs
    bind '^I=complete'
    bind '^I^I=complete-list'
    bind '^V=quote'
    bind -m '^[u=^Ucd ..^M'
    bind -m "^[o=| $PAGER^M"

elif [ X"$BASH_VERSION" != X ]; then
    PS1='hoge$ '
    bind 'Meta-u:" \C-ucd ..\n"'
    bind '"\M-u":" \C-ucd ..\n"'
    bind 'Meta-o:"| $PAGER\n"'
    bind '"\M-o":"| $PAGER\n"'

elif [ X"$ZSH_VERSION" != X ]; then
    autoload -U compinit
    compinit -u
    compdef -d w3m
    
    bindkey -e
    bindkey -s '\M-u' '^Ucd ..\n'
    bindkey -s '\eu' '^Ucd ..\n'
    bindkey -s '\M-o' "| $PAGER^M"
    bindkey -s '\eo' "| $PAGER^M"
    
    p=/usr/pkgsrc/
    s=/usr/src/

    PS1=$'%~\n%{^[[32;40;1m%}%n@%m(%!)%{^[[0m%} '
    RPS1='%{^[[32;40;1m%}%D{%Y/%m/%d %H:%M:%S}%{^[[0m%}'
    SAVEHIST=$HISTSIZE
    HISTFILE=~/.zhistory
    
    setopt hist_ignore_all_dups
    setopt hist_reduce_blanks
    setopt share_history
    setopt auto_cd
    setopt cdable_vars
    setopt correct
    setopt no_beep
    setopt menu_complete
    
    zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[.,_-]=* r:|=*' 'l:|=* r:|=*'

    alias -g O="| $PAGER"
else
    set -E emacs
fi

[ -f "$HOME/.profile_$HOST" ] && . "$HOME/.profile_$HOST"

unset ENV
# end