Powered by SmartDoc

ドットファイルの例

佐々木重雄

Table of contents


Netscape4 以前のブラウザでは、目次からのジャンプに失敗します。 HTML 3版を参照してください。

zsh

.zshrc

.zshrc(シェル変数)
HISTSIZE=1000
fignore=('.o' '~')
	# 補完を行なうときに無視する接尾辞
	# これを指定するとかえって不便なこともある。

PROMPT='%n[%t]%# '
	# プロンプト
	# %n はログイン名, %t は時刻

RPROMPT='%m:%~'
	# 右プロンプト (%~ のような、長さの変わる情報を表示するとき便利)
	# %m: ホスト名
	# %~: cwd(current working directory)のパス
	# %~ だけの方がカット・アンド・ペーストしやすくて便利かも

mailpath=(~/Mail/inbox)
	# procmail(1)でメイルを自動仕訳しているときには、こうする
.zshrc(オプション変数)
setopt autocd automenu autolist correct nobeep nonomatch
setopt listtypes pushdsilent
setopt histignoredups
setopt notify
setopt printexitvalue
	# オプションの意味はマニュアル(zshoptions(1))を参照のこと
.zshrc(キーバインド)
stty -istrip
bindkey -m
	# Meta キーを有効にするための「おまじない」
	# stty -istrip は 8ビット・スルーにするという意味(だったか)
bindkey -e	# emacs ライクなキーバインド
.zshrc(補完関係)
limitargs=(cputime filesize datasize stacksize coredumpsize
		resident maxproc descripters)
	# limit(1), unlimit(1)の補完候補
printers=(lp ps)
hosts=(localhost 127.0.0.1 akita-u.ac.jp)
urls=(http://www.is.akita-u.ac.jp/ http://www.akita-u.ac.jp/)

compctl -c man jman which	# コマンド名を補完候補に
compctl -l '' nice exec screen	# cmd arg1 arg2 ... 型の補完
compctl -E printenv setenv
compctl -v -E vared unset	# シェル変数、環境変数
compctl -g '*.tex' + tex jtex ptex latex jlatex platex
compctl -g '*.dvi' xdvi dviselect dvips dvi2ps
compctl -g '/var/db/pkg/*(:t)' pkg_info pkg_delete
	# /var/db/pkg 下のファイルの basename を補完候補に
compctl -k limitargs limit unlimit
	# limit と unlimit の補完候補は $limitargs
compctl -k hosts  slogin telnet ftp ncftp ping nslookup traceroute xhost
compctl -f -k hosts rsh ssh
compctl -f -x 's[http://]' -k hosts -k urls -- w3m netscape
compctl -f -x 's[-P]' -k printers -- lpr lpq lprm prn
compctl -x 's[-]' -k signals -- kill
compctl -x 's[if=] , s[of=]' -f -- dd edd
compctl -v -x 's[DISPLAY=]' -k hosts -S ':0' -- export
	# export の引数は変数(-v)だが、 DISPLAY= で始まっていると
	# ホスト名で補完して、末尾に :0 を付ける
function _folders () { reply=(`folders -recurse -fast`) }
compctl -x 's[+]' -K _folders -- folders folder scan packf
	# 補完時にシェルコマンドを呼出す例
.zshrc(エイリアス)
alias ls='ls -F' la='ls -a' ll='ls -lg' le='less -e'
alias pd=pushd
alias j=jobs    sw='%-'   z=suspend	
alias his=history las='last -20'
alias jman='LANG=ja_JP.EUC /usr/local/bin/jman'
alias xemacs='LC_MESSAGE=ja_JP xemacs'
alias h=scan s=show n=next p=prev # d=rmm
	# こういうエイリアスを定義して
	# MH フォルダの補完もできると
	# mh はフロントエンド無しで使える
alias clear="echo -n '\033(B\033[H\033[J'" 
	# 文字化けを戻すエスケープシーケンスを出力
	# しかし役に立ったことはほとんど無い
.zshrc(簡単な関数)
setenv () { export $1=$2 }
	# [t]csh の setenv のエミュレーション
lll ()	{ ls -lg $@ | eval ${PAGER:-more} }
manroff () { nroff -man $* | eval ${PAGER:-more} }
xtitle () { echo -n '^[];'$*'^G' }
	# xterm/kterm でタイトルバーの文字列を変更する

.zshenv

.zshenv(環境変数以外)
umask 002	# FreeBSD のように 1グループ1ユーザにしているところで便利
limit coredumpsize 0
limit maxproc 100	# 40 is default
.zshenv(OS非依存)
export EXINIT='set autoindent autowrite showmatch shiftwidth=4
	map ; :'
		# vi(1)の設定
export BLOCKSIZE=1k
	# df(1)の出力の制御

if [ -f /usr/local/bin/jless ]; then
    export PAGER=/usr/local/bin/jless JLESSCHARSET=japanese LESS=-e 
elif [ -f /usr/local/bin/less ]; then
    export PAGER=/usr/local/bin/less JLESSCHARSET=japanese LESS=-e 
else
    export PAGER=more
fi
export EDITOR=emacsclient
if [ "$UID" = 0 ]; then
    export EDITOR=vi
fi

# Several machines forget to register the kterm entry
# to TERMCAP and/or TERMINFO
test "$TERM" = kterm && TERM=xterm
.zshenv(研究室依存)
export TEXINPUTS=.:$HOME/tex/inputs:
export TAPE=/dev/nrst0
export NNTPSERVER=news
export MAILHOST=mailer.is.akita-u.ac.jp
.zshenv(OS依存)
case $OSTYPE in
    freebsd*)   # FreeBSD
        osbin=()
        sbin=(/usr/sbin /sbin)
        ;;
    linux*)     # Linux
        osbin=()
        sbin=(/usr/sbin /sbin)
        ;;
    solaris*)   # Solaris
        osbin=(/usr/ccs/bin /usr/ucb)
        sbin=(/usr/sbin /sbin)
        ;;
    hpux*)	$ HP-UX
	osbin=(/usr/bin/xpg4 /usr/bin /usr/ccs/bin /usr/contrib/bin)
	x11bin=(/usr/bin/X11 /usr/contrib/bin/X11)
	miscbin=(/usr/local/bin/* /opt/*/bin)
esac
.zshenv(ホスト依存)
case $HOST in
    lambda*)	# FreeBSD
	miscbin=(/usr/local/bin/MH /usr/local/{jdk1.2.2,jdk1.1.8}/bin)
	export PAGER=less
    ;;
    quartet.is.akita-u.ac.jp|octet.is.akita-u.ac.jp)	# IPC
	miscbin=(/usr/local/bin/* /opt/*/bin)
	export PAGER=less
    ;;
esac
.zshenv(OS依存その2)
if [ -z "$sbin" ]; then
    if [ -d /sbin ]; then
	sbin=(/sbin /usr/sbin)		# new fashion UNIX
    elif [ -d /usr/etc ]; then
	sbin=(/usr/etc)			# SunOS 4, NeXT
    else
	sbin=(/etc)			# old fashion UNIX
    fi
fi

if [ -z "$x11bin" ]; then
    if [ -d /usr/bin/X11 ]; then
	x11bin=/usr/bin/X11
    elif [ -d /usr/local/bin/X11 ]; then
	x11bin=/usr/local/bin/X11
    elif [ -d /usr/X11R6/bin ]; then
	x11bin=/usr/X11R6/bin
    fi
fi
.zshenv(コマンド実行パス)
path=(~/bin $hostbin /usr/local/bin $x11bin
      /usr/ucb /usr/bin /bin
      $sbin $miscbin)

.zlogin

# Setting Terminal
eval `tset -s`		# 端末設定の決り文句といってよいでしょう。

# カーソル前一文字消去(erase)が、キーボードによって
# BS だったり DEL だったりするので、
# キーボードから入力してもらって、それを erase とする。
echo 'Which is the erase key on your keyboard?'
echo -n 'Type here: '
read -k erase
stty erase $erase 
echo ...OK.

# コンソールから Xサーバを起動するのを、 x という 1文字コマンドで
# できるようにする。しかも、セッション終了で自動ログアウトする。
# case文の判定は、 telnet and/or rlogin したときに、ログイン先で
# 誤って X サーバを起動しないための工夫。この手の事故が多いのか、
# XFree86 では、ユーザが xinit を実行するのがえらく面倒になった。
# xdm などを使えと言うことらしい。というわけで、最近は無用の長物。
case `tty` in
    /dev/console|/dev/ttyv[0-9])
	alias x='xinit >& ~/.CONSOLE;
	         for i in 3 2 1 clear; do
		     echo -n ...$i; sleep 1;
		 done; clear; logout'
esac

X11関係

.xinitrcはxinitでXサーバを起動したとき.xsessionはxdmでログインしたときに実行される。共通の設定も多いので、僕は、~/.xconfigというファイルに共通の設定を記述している。

.xinitrc

結構いい加減かも

#!/bin/sh
cd $HOME

# xset fp= tcp/lambda.is.akita-u.ac.jp:7100

sh $HOME/.xconfig

#xterm -sb -ls -bg black -fg white -geometry 78x12+5-5 -title Console
afterstep # -f $HOME/system.steprc

#sleep 3
clear

.xsession

#! /usr/local/bin/zsh -x
                             # ~/.zshenv の設定を読み込む

#xset fp= tcp/lambda.is.akita-u.ac.jp:7100

sh $HOME/.xconfig

#xterm -sb -ls -bg black -fg white -geometry 78x12+5-5 -title Console

# kinput を起動するなら、ここで
# kinput2 &

# いくつかあるウィンドーマネージャから
# インストール済のものを選択して実行
wmlist=(/usr/X11R6/bin/afterstep
        /usr/X11R6/bin/fvwm
        /usr/X11R6/bin/twm)
for i in $wmlist
do
    if [ -x $i ]; then
        WM=$i
        break
    fi
done

# ssh-agent は、 SSH の RSA 認証で使う
# パスフレーズを記憶してくれる
if [ -x /usr/bin/ssh-agent ]; then
    /usr/bin/ssh-agent $WM
elif [ -f /usr/local/bin/ssh-agent ]; then
    /usr/local/bin/ssh-agent $WM
else
    $WM
fi

.xconfig

共通設定
#!/bin/sh -x
cd $HOME

# .Xresources のかわりに .Xrdb を読む
if [ -f .Xrdb ] ; then
    xrdb .Xrdb
fi

# ビープ音を短くしたり、マウスの加速度を変えたり、
# スクリーンセイバーの働き方を指定したり
xset b 100 440 100
xset m 4 8
xset s blank
xset s 600 10

# キーバインドを変更
xmodmap .xmodmaprc

.xmodmaprc

HappyHackingKeyboard用 xmodmap設定
!
! Xmodmap
!
keycode 94 = backslash bar
keycode 51 = backslash bar
keycode 49 = grave asciitilde
keycode 129 = Meta_R
keycode 131 = Meta_L

電子メイル関係

.mailrc

UCB mailの初期設定ファイル。

set append ask autoprint 
set indentprefix="> "
set crt=1
set folder=Mail
set hold
set pager=less
retain bcc cc date from subject to

他にalias(別名)を定義することができ、たとえば

alias tomodachi  tomo@ipc.akita-u.ac.jp, dachi@ipc.akita-u.ac.jp

と書いておくと、tomodachi宛のメイルは、tomo@ipc.akita-u.ac.jp, dachi@ipc.akita-u.ac.jpに送られる。~/.mailrcにおけるalias定義は、Emacsのメイル送信でも(自動的に)参照される。

.mh-profile

MH(mail handler)のコマンド群が参照する設定ファイル。

Path: Mail
Draft-Folder: draft
Editor: emacs

.procmailrc

電子メイルの自動仕分けコマンドprocmailの設定ファイル

PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
MAILDIR=$HOME/Mail
DEFAULT=inbox/.
LOGFILE=$MAILDIR/mlog

:0
* ^From MAILER-DAEMON
daemon/.

:0:
* ^To: report@is.akita-u.ac.jp
report/.

:0:は(ロックして)安全に処理する。:0は(ロックせず)高速に処理する。*で始まる行は検索条件。^From:はヘッダのFrom, ^FromはEnvelope From(Unix Fromと呼ばれることもある)のパターンである。ヘッダのFromは書き換え可能なので, Envelope Fromで仕分けをした方がよい。最後の行が/.で終っていれば、MHフォルダとして扱う。/で終っていればMaildirフォルダとして扱う。いずれでもなければUnix Mail形式のフォルダ(1つのファイル)として扱う。

その他

.ident.pro

C言語のインデント調整プログラムindentの初期設定ファイル

-bap
-nbc
-ncdb
-nce
-ei
-lp