PuttyやCygterm で cygwin を起動しているのですが、コンソールが起動するのに7~8秒もかかり、コンソールを大量に立ち上げる時は、かなりストレスがたまります。

これはcygwinのforkが遅いのが原因で、特に64bit環境で遅いのが原因のようで、起動時に呼び出される/etc/profileの実行時間が大半のようです。

試しに実際に起動後のプロンプトでbashを実行してもすぐに応答が返ってきますが、bash --loginを実行すると時間がかかってしまいます。

/etc/profileの処理を--noprofile オプションをつけてスキップさせることはできますが、これだといろいろと必要な環境変数がセットされないので、かなり使いにくい。

そこで、起動時に不要な処理をスキップさせるように、/etc/profileの処理を追ってみたところ、どうも一番重い処理は/etc/bash_completionのようです。

bash_completion ファイルは、TABを押して補完できる文字列を拡張する設定ファイルです。このファイルの処理をスキップしても、通常の単純な補完は動作するので、この処理をスキップすることにしました。

スキップ方法は、 /etc/profile.d/bash_completion.sh の1行目に、returnコマンドを挿入するだけです。

これで、2~3秒ぐらいでcygwinが起動するようになりました。(これでも遅いけど・・・)