)ではバックスラッシュの扱いが違うらしい。'$foo'と"$foo"は同じ結果になる。MAILCHECKメールチェックしない。デフォルトでは60秒に一回メールチェックするようになってるけど、ファイルがローカルホストに来なければ意味ないし。'プライマリプロンプト。一台のマシンから複数のホストへ接続するから、ホスト名は入れておかないと。"\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'この変数に指定したモノが、プライマリプロンプトを出す直前に実行される。改行なし、エスケープありのechoコマンドがひとつ指定されている。ESC]0;というのはxtermのエスケープシーケンスで、アイコン名とウィンドウタイトル、つまり、端末ウィンドウのタイトルバーを変更する。文字列は直後に続け、^G、つまりBELLで終わる。ちなみに0を1にするとアイコン名のみ、2にするとウィンドウタイトルのみの変更。文字列の部分は${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}になっているから、「ユーザー名@ホスト名:カレントディレクトリ」になる。%%.*は最長一致でサフィックスを削除だから、ホスト名はピリオドの直前まで。/#$HOME/~は先頭からの一致部分を置換だから、ホームディレクトリはチルダに置換されるが、ホームディレクトリの外にいる場合はそのままフルパスになる。結局、コマンドプロンプトが出るたびにタイトルバーがプロンプトと同じように変わる。タイトルバーを変えておくと端末ウィンドウを[Alt]+[Tab]なんかで切り替えるときに便利。PROMPT_COMMAND=${PROMPT_COMMAND/'${HOSTNAME%%.*}'/name-of-this-host}fiとわざわざ置き換えていたりする(笑)。files\putty\plink.exe"`"これはCygwinの設定。CVSで:ext:トンネルにplinkを使う。Cygwinのパスを書くのが面倒なんで、cygpathを使っている。Unix系なら単にsshと書いておけばいい。別にCygwinでsshを使ってもいいんだけど、PuTTYの方がエージェントが使いやすいから・・・。PuTTYから他のホストにログインするときにエージェントフォワードを有効にしておけば、ログインした先ではエージェントいらなくなるし・・・。LESS="-R"lessのオプション。ANSIエスケープシーケンスを認識させる。キカイによっては-iも指定していることがある。-ixon端末XON/XOFF制御を無効にする。これをやっておかないとreadlineのヒストリ検索[Ctrl]+[R]で行き過ぎてしまった場合の逆戻り[Ctrl]+[S]が使えない。逆に、これをやってしまうと[Ctrl]+[S]で画面が止まらないわけだが、そういう場合はそもそもlessのようなページャーを使うことが多いわけで、困ったことはない。sttyをベタに書くと入出力が端末ではなかったときに先ほどの例のように文句を言われる。ファイルディスクリプタ0、つまり標準入力が端末につながっている場合に真。checkwinsizeコマンド実行ごとにウィンドウサイズを調べ、環境変数COLUMNSとLINESを更新する。これをやらないと端末ウィンドウの大きさを変えたときにreadlineによる編集がうまくいかなくなる。-C'16進バイト単位のダンプ。これが一番見慣れている。DOS時代に自分で作ったdumpというプログラムがあるのだが、Unixには元々dumpコマンドがあって名前が当たるので、ydumpと改称した。こっちはJIS半角カタカナとかを表示しようとするからUni*ではそのまま使えないんだよな。ダンプ結果をテキストエディタで編集して、redumpというコマンドで編集結果をバイナリに戻せたりして、結構便利。機会があったら紹介する・・・ほどのプログラムでもないか。2012)プログラム開発、特にDLLを作っていると、カレントディレクトリや親子・兄弟関係にあるディレクトリをパスに加えたいことがある。pwd`}指定するディレクトリは相対パスでいい。指定されたディレクトリにcdしてpwdすることで絶対パスを得ている。コマンドによる文字列の置き換えはサブシェルを起動する(bashのマニュアルには書いてないがPOSIXのマニュアルには書いてあった)ので、カレントディレクトリを覚えておく必要はない。realpathというコマンドがあるシステムもあるし、pushd・popdを使ってもできそうだが、これだとPOSIXの範囲でできて、しかも簡単だ。PATHが空だと頭に余計に:が付くが、空だとpwdが実行できないからまぁいいだろう。2012)パスを抜く。ものを順に削除している。相対パスで指定すればいいのはaddpathと同じ。addpathの場合は存在しないパスを指定することはまずないだろうが、remove-pathの場合は実際には存在しないパスを削除したいこともある(PATHにゴミが残っている場合)。パスが存在してないとcdできないので削除できない。2012)パスを行ごとにバラしてくれる。whichの例からパクってきたんだと思う。エイリアスやシェル関数も探してくれる。$@}ls関係CygwinをUTF-8で使っている場合はlocaleの関係でグループ名が化けるので、lsはLANG=SJISで実行して、iconvでUTF-8に変換するようなシェル関数が定義してある。そのうちどこかで紹介するつもり。fi}なんてのが定義してある。すると、行の先頭にdが付くので、それをgrepで拾っている。-lになるので、lsdirだけ打ち込むとカレントディレクトリにあるディレクトリが表示される。-ldになるので、指定されたファイル名のうちディレクトリであるものだけが表示される。a*とやれば、aで始まるディレクトリが表示される。--colorは強制的にカラー表示にする。デフォルトでは端末につながっているときだけカラー表示するが、出力をパイプでgrepに渡している関係でこうしないとカラーにならない。渡してもカラーになる反面、sedに渡したりファイルに吐いて編集するような場合は都合が悪い。いうときは生のlsを使っておくれ。]で--colorを指定したりしなかったりすればよい。2012)Cygwinのstartコマンド。Windowsのstartコマンドはcmdの内部コマンドなので、Cygwinからは実行できない。その代わりにcygstartコマンドがあるのだが、ちょっと打ちにくい。aliasにしてしまえ、と。2012)ホームディレクトリ以下をテキストマウントで使っている人なので、時々特定のディレクトリをバイナリでマウントしなおしたいことがある。"$1"`}cygpathを使って指定されたパスをWin32絶対パスとCygwin絶対パスに変換しているので、引数に相対パスをひとつだけ指定すればいいところがミソ。.とすれば、カレントディレクトリをバイナリマウントしてくれる。