dodaの日記: Cygterm Here
2chでCygterm Hereだと/etc/profileを読まないという話が出てた。 2chは自分には合わないので、とりあえずここで書いてみる。
なぜ読まれないかはログインシェルじゃないからという事で正しいんだけれど、bashかzsh(多分ashやpdksh等も)を使っているのなら一応対策はある。
# /etc/profileという事なので、多分bashなんだろうと思う
- レジストリエディタを起動して cyglaunch.exe" -nocd を検索
- 引っかかったら(多分HKCR\Folder\shell\cygterm\commandの既定で引っかかる)メニューの"編集"->"修正"を選択
- 値のデータが
"C:\~\cyglaunch.exe" -nocd -nols -d \"%L\"
となっているので、-nolsを-v CHERE_INVOKING=yに書き換える。
"C:\~\cyglaunch.exe" -nocd -v CHERE_INVOKING=y -d \"%L\"
- レジストリエディタを終了
これでOKなはず。
ダメな場合は、/etc/profile, /etc/zprofileが最新になっているか確認する。
まずcygwinのsetupで、/etc/profileならばbase-files, /etc/zprofileならばzshを最新版にアップデートする。
これだけだと更新されない場合があるので、profileならば/etc/defaults/etc/profile, zprofileならば/usr/share/doc/zsh-X.Y.Z/StartupFiles/etc/zprofileにある最新版の内容をマージ(特にいじっていなければ上書きコピー)する。
仕組みとしてはCHEREのものを利用しているんだけど、残念ながらtcshはCHEREに対応していないので、上記の対応を行うと指定のディレクトリに移動しなくなるはず。
どうしてもCygterm Hereでtcshが/etc/csh.loginを読み込むようにしたい場合は、上記対応の後に、/etc/csh.loginの最後辺りにある
cd
という行を、
if ( ${?CHERE_INVOKING} ) then
unsetenv CHERE_INVOKING
else
cd
endif
に書き換えれば大丈夫なはず。
Cygterm Here More ログイン