お世話になっております。

もうずいぶん以前(少なくとも2007年頃には)からなのですが、tcsh で
.history ファイルが巨大化する現象で困っています。あまり原因の切り分けが
出来ていないのですが、コマンドラインで日本語ファイル名を指定すると
.history ファイル中の該当部分が文字化けした長大な行として記録されてしま
います。これを繰り返しているうちに.history ファイルが何100MBにもなって
しまい、最終的に tcsh を起動できなくなってしまいます。

tcsh は EUC で使っていてシェル変数の関係ありそうな部分は以下のようなも
のです。

dspmbyte euc
histdup erase
history 1000
savehist (1000 merge)
version tcsh 6.17.00 (Astron) 2009-07-10 (unknown-unknown-FreeBSD) options 
wide,nls,dl,al,kan,sm,rh,color,filec




tcsh のソースで config_f.h に以下のパッチをあててコンパイルするとなぜ
か問題は発生しなくなります。

*** config_f.h.orig     Tue Sep  9 16:12:23 2008
--- config_f.h  Tue Sep  9 16:15:09 2008
***************
*** 53,58 ****
--- 53,61 ----
  #if defined (SHORT_STRINGS) && defined (NLS) && SIZEOF_WCHAR_T >= 4 && 
defined (HAVE_MBRTOWC) && !defined (WINNT_NATIVE) && !defined(_OSD_POSIX)
  # define WIDE_STRINGS
  #endif
+ #undef WIDE_STRINGS
+
+ #define ICONV_CONST const

  /*
   * NLS_CATALOGS:Use Native Language System catalogs for


問題を生じない tcsh ではオプションは以下のようになっています。

version tcsh 6.17.00 (Astron) 2009-07-10 (unknown-unknown-FreeBSD) options 
8b,nls,dl,al,kan,sm,rh,color,dspm,filec


dspm オプションの有無が効いているようにも思われます。



お伺いしたいことは以下の点です。
1) 同じような現象は皆様のところでも起きていますでしょうか?
2) 本当の原因は何でしょうか?
3) 上記のように解決すると良くない副作用がありますでしょうか?
4) 正しい解決方法は何でしょうか?

よろしくお願い致します。   

      松田@北大

メールによる返信