\documentstyle[a4j]{jarticle}
\title{\LARGE{FreeBSDカスタマイズ}}
\author{}
\date{}
\begin{document}
\maketitle
\section{環境って？}
たとえ同じ計算機を使う場合でも,人によっては使いにくいと感じる人もいれば
使いやすいと感じる人もいる．また,「ここがどうしても気にくわん」とか,「こ
こがこうなればもっと使いやすいのに」とか思うこともよくある。
そう思ったときに計算機を自分の使いやすいようにして，自分のやり方で
計算機を使っていくことができる(できないOSもあるが)．

計算機を使う時の主な動作として,
\begin{itemize}
 \item キーボード,マウスを使う%
 \item 画面をみる%
 \item アプリケーションプログラムを使う
\end{itemize}
が挙げられる．

この各動作を「自分が働きやすい」ようにすることを環境整備という．たとえば,
\begin{itemize}
 \item コマンド名を自分の好きなものにしたい%
 \item 壁紙を変えたい%
 \item ウインドウの色・デザインを変えたい%
 \item ログイン時に自動でアプリを起動したい
\end{itemize}
なんかが手始めに行う環境整備ではなかろうか．
\subsection{環境設定の前に}
UNIX系のOSでは設定ファイルを書き換えることにより環境
設定を行う．設定ファイルは自分のホームディレクトリで
\begin{verbatim}
 \% ls -a 
\end{verbatim}
と打ち込んでコマンドを実行させてみると表示される．-aオプションをつけると
通常表示されない,最初の文字が「.」(ドット)で始まる名前のファイル(ドット
ファイル)も表示される．このドットファイルを環境設定用のファイルのファイ
ル名として使うというのがUNIXでの約束になっている．

また,環境設定を行う際は,エディタでドットファイルを編集することになるので,
エディタの使い方もマスターしておいてほしい．

\subsection{ドットファイルの種類}
ホームディレクトリにあるドットファイルのうち,変更する可能性があるのは主
に以下のファイル．
\begin{description}
% \item[.login] csh,tcshの場合ログイン時に読み込まれる．%
% \item[.logout] ログアウト時に読み込まれる%
 \item[.cshrc] csh,tcshを起動する際に読み込まれる%
 \item[.tcshrc] .cshrcよりも優先的に読み込まれる%
 \item[.xsession] xdmでログインするときに読み込まれる%
 \item[.steprc] ウインドゥマネージャafterstepを起動する際に読み込まれる%
 \item[.emacs] Mule,Emacsを起動する際に読み込まれる%
 \item[.aliases] エイリアスを書いておく%
 \item[.forward] メールの転送先を書いておく%
 \item[.signature] メールの最後のシグネチャを書いておく%
 \item[.im/] IM(Internet Message)の設定ファイルがあるディレクトリ
 \item[.xinitrc] startxでXを立ち上げるときに読み込まれる 	
\end{description}

\subsection{現在の環境は?}
いきなり環境設定を始める前に,現在の設定がどうなっているかを調べる方法に
ついてまとめておく．
\paragraph{方法1}
「ls -a」コマンドでドットファイルを調べて,各ドットファイルをmoreやless等のコ
マンドで見る．
\paragraph{方法2}
set,printenv,stty コマンド等で基本的な設定の値が表示されるのを確認する． 
\section{シェルの環境設定}
\subsection{シェルとは}
OSの機能を実際に実現するプログラムのことをカーネルと呼ぶ．UNIXの場合,ユー
ザは直接カーネルのプログラムを実行するようにはなっていない．カーネルとユー
ザの間には,ユーザからの命令を受け取る作業を専門に行う機構が用意されてお
り,さらにその命令を解釈してカーネルに渡して実行してもらう．
\subsection{シェルの種類}
シェルには何種類かあり,新B4の最初の設定ではログインシェルはtcshになって
いる．
\begin{description}
 \item[Bourn シェル] UNIXに標準で備わっている．/bin/shが実行形式%
 \item[C シェル]UNIXに標準で備わっている．/bin/cshが実行形式 %
 \item[tcsh] cshの機能拡張版．/usr/local/bin/tcshが実行形式%
 \item[bash,zsh] その他のシェル
\end{description}
シェルを変えるにはシェル名を打てば変わる。もし、ログインシェル自体を変え
るときは\\
\%chsh \it{login name}\\
とうち、出てきた画面を編集すればよい。
\subsection{環境変数とシェル変数}
シェルはそれ自身の動作を定義する変数を持っている．この変数はシェル変数と
呼ばれるもので,シェルの中だけで使用される．この他に,UNIXシステムのコマン
ド全般に影響を与える変数として環境変数と呼ばれるものもある．なお,シェル
変数は小文字,環境変数は大文字を用いるのが一般的である．

シェル変数の値を表示するにはsetコマンドを実行することにより,左側にシェル
変数,右側に設定されている値が表示される．任意のシェル変数だけを参照する
には
\begin{verbatim}
	% echo $cwd
\end{verbatim}
の様に,シェル変数の前にメタ・キャラクタ{\tt \$}をつけて指定することで参照でき
る．

同様に,環境変数の値を表示するにはenv,printenv,setenv等を用いる．任意の環
境変数の値を表示したい場合もシェル変数と同様に行う．
\subsection{.cshrcの設定}
快適にシェルを使うために,tcshではドットファイル「.cshrc」を変更する．
何も変更していなければ
\begin{verbatim}
#
source /usr/local/share/skel/.cshrc-skel
alias rm rm -i
alias cp cp -i
alias mv mv -i
alias rlogin slogin

if (-r $HOME/.aliases) then
        source $HOME/.aliases
endif
\end{verbatim}
となっているはずである．「{\tt \#}」はコメントアウトである．2行目では別のファイル
/usr/local/share/skel/.cshrc-skelを読み込んでいる．

変更したい変数はたいていデフォルト設定ファイル中で設定されているが,ホー
ムディレクトリの.cshrcで設定しておけば上書きされる．

こまかい設定などは\\
http://www.db.is.kyushu-u.ac.jp/~fuki/mame.html\\
などに詳しい．

\subsection{エイリアスの設定}
普段良く使うコマンド(+オプション)は打つのに長すぎていやだ,いう場合は,エ
イリアス(別名)機能を使うと便利．
\begin{verbatim}
alias	kterm	'kterm -km euc -sb -fn tiny ' #ktermがスクロールするようになる
alias	mew	'mule -f mew '#mewが起動
alias	bif	'ssh -f minako xpbiff'

alias	ls 	'ls -F'
alias	la	'ls -a'
alias	ll	'ls -l'

alias	lll	'll |less'
alias	lsl	'ls |less'
alias	lal	'la |less'
alias   rm      'rm -i'
\end{verbatim}
なお,「alias」というコマンドで,現在自分が設定しているエイリアスの一覧が
見れる．ホームディレクトリの.aliasというファイルがあればこれを読むように
なっているのでファイルをつくり書き込んでおいた方が良い。\\
\section{.forward}
メールを転送させたいときに記述する。
\begin{verbatim}
\kubo
kubo@csce.kyushu-u.ac.jp
\end{verbatim}
書き方を間違えると悲惨なことになるので注意して書くこと。携帯などに転送す
ると便利。
\section{ウインドウシステムの環境設定}
\subsection{ウインドウシステム}
UNIXではX Windowとウインドウマネージャを使って様々なウインドウを同時
に複数開いて作業ができるようになっている．しかも,その見た目やマウス操作,
キー操作,色等,ほとんどの部分を自分好みに変えることができる．

Window Managerは何でも使用して良い。現在はAfterstepで統一しているがどう
変更しても自由である。他にfvwm,fvwm2,qvwm,enlightenmentなどなどたくさん
そろっている。
\subsection{Install}
ウィンドウマネージャーのインストールは\\
/usr/ports/x11-wm/\\
内に入っている。インストールしたいウィンドウマネージャーのディレクトリに
入って(例えばfvwm2等)\\
make;makeinstall\\
とすればよい。次にこのウィンドウマネージャを起動するには今動作中のウィン
ドウマネージャを停止させ新しいウィンドウマネージャを起動させなければなら
ない。

\begin{verbatim}
kubo@kago[~]%ps aux | grep enlightenment
kubo     306  0.1  4.4  7660 5480  v0  S     5:39PM   0:15.81 enlightenment
kubo@kago[~]%kill 306
kubo@kago[~]%afterstep &
\end{verbatim}
これでenlightenmentが停止され、afterstepが起動した。

\subsection{X起動時の設定ファイル}
コンソール(計算機の前)からログインする場合は
~/.xinitrcを読み込むようになっている．これは元になるものがすでに入ってい
るのでコピーする。すでにある人はコピーする必要はない。\\
\%cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc\\
.xinitrcの中には,ログイン時に起動しておきたいウインドウマネージャやクラ
イアントを記述している．
例として,壁紙(本当はroot windowと呼ぶ)を変えてみたり,時計を表示したり．
\begin{verbatim}
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
fi

# start some nice programs

  afterstep &

xclock -geometry 50x50-1+1 &
kterm -sb -geometry 60x20+451+0 &
kterm -sb -geometry 60x15+451+355 &
exec kterm -sb -geometry 60x20+0+0 -name login
\end{verbatim}
注意しておかないといけないのは,最後のログインシェル以外の記述には,行末に
「{\tt \&}」が必要であること．X Windowは最後に指定したプロセスが終了したときに
ログアウトするようになっている．よって,それ以前に起動したクライアントは
バックグラウンドにまわして,次のクライアントを起動しなければならない．

\subsection{.afterstep}
アプリケーションの起動をショートカットキーで行なうと大変便利。 Windows
などでは複数のキーを組み合わせて使うことが多いが、せっかく AfterStep を
使っているので、思い切って一発起動にしよう。例えばルートウィンドウで「k」を押
すと kterm が開く。
\begin{verbatim}
Key k		R	N	Exec "kterm"	exec kterm &
\end{verbatim}
ただし、ちゃんとルートウィンドウを指定している状態で
ないと動かない。そんなときは他のキー(例えば「Alt+k」等)と指定したりすること
で回避できる。
\begin{verbatim}
Key k		A	M	Exec "kterm"	exec kterm &
\end{verbatim}

マウスを使わずにウィンドウを移動させたり、ウィンドウの大きさを変更できる
のも便利。「Ctrl + カーソルキー」
で仮想画面の移動、「Alt + カーソルキー」でウィンドウの移動、
「Alt + Ctrl + カーソルキー」でウィンドウの大きさを変更ができる。
これらはすでに記述されていたりするが自分好みにカスタマイズするの
も良いだろう。

\begin{verbatim}
Key Left	A	C	Scroll -100 +0
Key Right	A	C	Scroll +100 +0
Key Up		A	C	Scroll +0   -100
Key Down	A	C	Scroll +0   +100

Key Left	A	M	Function "Shade-or-Raise"
Key Right	A	M	Function "Shade-or-Raise"
Key Up		A	M	Function "Shade-or-Raise"
Key Down	A	M	Function "Shade-or-Raise"

Key Left	A	CM	Function "Resize-or-Raise"
Key Right	A	CM	Function "Resize-or-Raise"
Key Up		A	CM	Function "Resize-or-Raise"
Key Down	A	CM	Function "Resize-or-Raise"
\end{verbatim}
ここではキーバインドのみに関して記述しているがafterstepのいろいろな部分
に関してカスタマイズは可能なので調べてみるとよい。
\section{その他}
\subsection{エディタの環境設定}
muleのキー操作も変更可能．~/.emacs中
でloadしている各ファイルを良く見て変更すれば良い．しかし,muleの設定ファ
イルはemacs lispという,特殊な言語で記述されているため,要注意．
\subsection{gkrellm}
現在のマシンの状態などが見れるツール。Portsでは\\
/usr/ports/sysutils/gkrellm\\
に入っている。結構便利。
\subsection{設定変更時の注意}
以上,様々な設定個所を述べたが,これらを一度に変更してしまったあとにログ
アウトして,次にはログインできないということがよくある．その場合どこ
が問題かも分からなくなっていまうので,少しづつ変更していくようにするべし．
また,研究室の他の人のドットファイルを覗いてみて,まねしてみるのもいいかも．
\subsection{参考}
\begin{enumerate}
 \item とりあえず,man $<$キーワード$>$,コマンド --helpしてみる．%
 \item そこら辺の本(UNIX USER,UNIX MAGAZINE)なんかを漁る
 \item gooなんかで探すと親切な人による解説があるはず%
 \item 研究室の人に聞いてみる
\end{enumerate}
\end{document}