パスワードを忘れた? アカウント作成
24436 journal

dodaの日記: Cygterm Here

日記 by doda

2chでCygterm Hereだと/etc/profileを読まないという話が出てた。 2chは自分には合わないので、とりあえずここで書いてみる。

なぜ読まれないかはログインシェルじゃないからという事で正しいんだけれど、bashかzsh(多分ashやpdksh等も)を使っているのなら一応対策はある。
# /etc/profileという事なので、多分bashなんだろうと思う

  1. レジストリエディタを起動して cyglaunch.exe" -nocd を検索
  2. 引っかかったら(多分HKCR\Folder\shell\cygterm\commandの既定で引っかかる)メニューの"編集"->"修正"を選択
  3. 値のデータが

    "C:\~\cyglaunch.exe" -nocd -nols -d \"%L\"

    となっているので、-nols-v CHERE_INVOKING=yに書き換える。

    "C:\~\cyglaunch.exe" -nocd -v CHERE_INVOKING=y -d \"%L\"

  4. レジストリエディタを終了

これで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

に書き換えれば大丈夫なはず。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

日本発のオープンソースソフトウェアは42件 -- ある官僚

読み込み中...