TCSH の拡張 (ヒストリー展開後の一旦停止) 作成 小金丸信幸 E-Mail: kogane@koganemaru.co.jp 04 版 修正日 令和7年(2025年)02月21日 (金) はじめに みなさんは newcsh というものをご存知でしょうか。csh をベースにパッ チを当てて作成するもので、csh の機能に加えてコマンドラインを修正で きるようになっています。それでは tcsh と同じではないかと思われるで しょう。その通りで、tcsh が出現すると newcsh はいつのまにか消え失 せて tcsh にとって変わられました。しかし newcsh には tcsh にない機 能があります。それは、ヒトリー展開が起こると展開後のコマンドを表示 して一旦停止するというものです。例えば % more some.c % vi !* を行うと tcsh の場合は、即 vi が実行されますが、newcsh の場合は % more some.c % vi !* % vi some.c "vi !*" でエンターを行うと "vi some.c" と展開して表示た後一旦停止 します。そして、この行を再び編集することもできます。これはちょうど ヒストリーに :p を付けた働きと同じです。 % more some.c % vi !*:p % vi some.c 私は tcsh を使い始めて、ヒストリー後の停止がないため、戸惑いました。 それで、tcsh にこの機能を追加しました。シェル変数 pausehist が設定 されていれば、この機能が働きます。設定されていなければ、普通の tcsh と同じになります。 % set pausehist # 普通 .cshrc か .tcshrc に設定します。 ヒストリー展開後、即実行する場合にエンターを二度打ちしなけらばなり ませんが、キー位置が同じですから、なれれば、特に不便ではないと思い ます。 1. ソースファイルの準備 FreeBSD 14.2-RELEASE のソースファイルを準備します。 ・ /usr/src にソースファイルがあって、直接修正してよいのであれば、そ のままでかまいません。 ・ そうでなければ、/usr/src 下の contrib/tcsh と bin/csh をいずれかの 場所にコピーしてください。bin/Makefile bin/Makefile.inc のコピーも 忘れないように注意してください。 ・ ソースファイルを展開していないのであれば、リリースファイルからいず れかの場所にソース展開をしてください。つぎのような手順で必要な contrib/tcsh と bin/csh だけを取り出すことができます。 % set x=somewhere/tcshmake % cd somewhere/14.2-RELEASE/src % cat scontrib.?? | tar -C $x -xvzf - contrib/tcsh % cat sbin.?? | tar -C $x -xvzf - bin/Makefile\* bin/csh 2. パッチファイル tcsh.6.15-14.2R.diff.tar.gz ファイルを準備してください。 ファイルの内容は次の通りです。 README 本ファイル tcsh.6.15-14.2R.diff パッチファイル ftp://ftp.koganemaru.co/jp/pub/FreeBSD/tcsh.6.15-14.2R.diff.tar.gz に置いています。 3. パッチを当ててコマンドの作成 # cd /usr/src # patch -p1 <tcsh.6.15-14.2R.diff # cd /usr/src/bin/csh # make obj depend # make を行うと対応する /usr/obj/...somewhere/bin/csh に実行形式の csh が作 成されます。 csh, tcsh (注)を置き換えて構わないなら、root になって # make install を行えばよいでしょう。 もし、作成された、csh がダイナミックリンク形式の実行形式なら bin/Makefile.inc ファイルのコピー忘れです。 make のオプションとして % make NOSHARED=YES を指定すれば、スタテックリンク形式の実行形式の csh が作成できます。 注) FreeBSD 14.2-RELEASE では csh と tcsh は同一でリンクされたファ イルになっています。 4. その他 set reedithist は set pausehist と同様です。 5. 改版履歴 01 版 作成日 平成14年(2002年)03月12日 (火) 新規作成 02 版 修正日 平成15年(2003年)06月16日 (月) FreeBSD 4.8-RELEASE, tcsh.6.12 に対応した。 03 版 修正日 平成17年(2005年)10月18日 (火) FreeBSD 5.4-RELEASE, tcsh.6.12 に対応した。 04 版 修正日 平成17年(2005年)10月18日 (火) FreeBSD 14.2-RELEASE, tcsh.6.15 に対応した。 -- (有)小金丸コンピュータエンジニアリングサービス (福岡県大野城市) 小金丸 信幸 (Nobuyuki Koganemaru) E-Mail: n-kogane@syd.odn.ne.jp E-Mail: kogane@jp.FreeBSD.org E-Mail: kogane@koganemaru.co.jp URL: http://www.koganemaru.co.jp