20080215
QTTabBarからcygwinを任意のパスで起動する
bashの起動時に引数で任意のパスを指定する方法が見つからなかったので、他の方法として次の方法を検討した。
(A)bashの起動前にカレントフォルダを任意のパスに変更しておく。
(B)bash起動直後に自動的に任意のパスに移動する。
cygwinではbash起動後にprofileファイル中で${HOME}に移動しているので、(A)の方法だとその部分をコメントアウトしないといけなくなり、個別ユーザ用の設定ファイルじゃないファイルを変更しないといけないので不採用とした。
そこで、(B)の方法を実施する。
- QTTabBarのアプリケーションの追加にCygwin.batを追加し、引数にcurrent folder(%c%)を指定。
- Cygwin.batを編集し引数で与えたパスを環境変数に設定する処理を追加する。
@echo off
C:
chdir C:\cygwin\bin
if '%1'=='' goto START ← 追加 ※%1を"で括るとパスにスペースを含む場合に失敗する。
set STARTDIR=%1 ← 追加
set STARTDIR=%STARTDIR:\=/% ← 追加
set STARTDIR=%STARTDIR:"=% ← 追加
:START ← 追加
bash --login -i
- HOMEディレクトリでbash_profileの最後に次を追加する。
cd "${STARTDIR}" # 環境変数の参照を"で括ること。括らないとスペースを含むパスで失敗する。
追記
- 「cygwin bash 右クリック」とかでぐぐるとレジストリに登録するやり方とか出てくるので、もっと簡単なやり方がありそう。
- cygwin自体にchereという右クリックメニューにbashを登録するツールがあった。ただ、これだとQTTabBarからは起動できない。
- パス中にフォルダ名の末尾に0x5cを含む文字("表"とか)があると失敗する。
- cygpathも試してみたが解決できなかった。
- コマンドプロンプトで当該フォルダに移動後、bashを起動する方法で期待したフォルダで起動できる。が結局フォルダ名の最後が0x5cだとls等他のコマンドが正常に動かないようだ。cygwin全体が多国語対応しない限り日本語絡みの問題がつきまといそう・・・。
- 「Windows Services for UNIX」使いたいコマンドがなかったりしそうだなあ。
- あとは、仮想環境でLinux動かしてマウントとか?
2011年11月04日(金) 01:26:34 Modified by n0gam0ga