TCSH の拡張 (ヒストリー展開後の一旦停止)

					作成	小金丸信幸
					E-Mail:	kogane@koganemaru.co.jp
					修正日	平成15年(2003年)06月16日 (月)

はじめに
	みなさんは 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 4.8-RELEASE のソースファイルを準備します。
     ・ /usr/src にソースファイルがあって、直接修正してよいのであれば、そ
	のままでかまいません。
     ・ そうでなければ、/usr/src 下の contrib/tcsh と bin/csh をいずれかの
        場所にコピーしてください。bin/Makefile bin/Makefile.inc のコピーも
        忘れないように注意してください。
     ・ ソースファイルを展開していないのであれば、リリースファイルからいず
	れかの場所にソース展開をしてください。つぎのような手順で必要な
	contrib/tcsh と bin/csh だけを取り出すことができます。

	% set x=somewhere/tcshmake
	% cd somewhere/4.8-RELEASE/src
	% cat scontrib.?? | tar -C $x -xvzf - contrib/tcsh
	% cat sbin.?? | tar -C $x -xvzf - bin/Makefile\* bin/csh

2. パッチファイル
	tcsh.6.12.diff.tar.gz ファイルを準備してください。
	ファイルの内容は次の通りです。
	README		本ファイル
	tcsh.6.12.diff	パッチファイル

	ftp://ftp.koganemaru.co/jp/pub/FreeBSD/tcsh.6.12.diff.tar.gz
	に置いています。

3. パッチを当ててコマンドの作成

	% cd ...somewhere/contrib
	% patch -p1 <tcsh.6.12.diff
	% cd ...somewhere/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 4.8-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 に対応した。

--
(有)小金丸コンピュータエンジニアリングサービス (福岡県大野城市)
	小金丸 信幸 (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