MinGW/MSYSのブートストラップ
参照:
- MinGWとMSYSとmake - 檜山正幸のキマイラ飼育記
- MinGW/MSYSをインストールした(何度目かな?) - 檜山正幸のキマイラ飼育記 現在とは違う
- MinGW/MSYSのbashを使うときの注意点 - 檜山正幸のキマイラ飼育記
- シェルのスタートアップ・ファイルいろいろ - 檜山正幸のキマイラ飼育記
http://sourceforge.net/projects/mingw/files/ の "Download mingw-get-setup.exe" をクリックすると、 mingw-get-setup.exe が落ちてくる。
これはブートストラップ用のプログラムで、実行すると、mingw-getがインストールされる。mingw-getがパッケージマネージャ。インストール時にGUIサポートをチェックしておかないとさすがに使いにくい。
デフォルトでは、C:/MinGW/ にmingw-getをインストールする。コマンドは C:/MinGW/bin/mingw-get.exe だけが入る。c:/MinGW/libexec/mingw-get/ の下にDLLやヘルパーコマンド群。Lua言語でカスタマイズできるようだ。c:/MinGW/var/cache/mingw-get/packages/ にアーカイブ(.tar.xzファイル)がキャッシュされる。c:/MinGW/var/lib/mingw-get/data/ に大量のメタデータらしきもの。
GUIのmingw-getは使いにくいUI。パッケージを選んでから、メニューからアクションを選ぶという操作(たぶん)。
bashだけを選んでインストールすると、c:/MinGW/msys/1.0/ に一式出来る。が、動かない。パスを設定すると動く。
Git for Windowsの構造と利用
Git/bin/ には、
- サイズ140,288 git.exe
- サイズ32,768 bash.exe
- サイズ32,768 sh.exe
bash, shはハードリンクじゃなくて、ほんとにコピーしている。ハードリンクを調べるには、管理者権限で、fsutil hardlink list ファイル名 とする。140K, 32Kだから非常に小さい。スタブだと分かる。
Git/cmd/ は、
- サイズ140,288 git-gui.exe
- サイズ140,288 git.exe
- サイズ140,288 gitk.exe
これらもスタブで実体ではない。git関連だけが cmd/ に入っている。
Git/usr/bin/ は、
- 2,060,758 bash.exe
- 2,060,758 sh.exe
2メガあるから、bashの実体だろう。msys/1.0/bin/のbashは、563,200 bash.exe なので約1/4。
Git/mingw64/bin/ に、
- 1,813,497 git.exe
これがGitの実体らしい。
パスの通し方
現状は、
この状況では、
- sh → C:\Installed\MinGW\msys\1.0\bin\sh.exe
- gcc → C:\Installed\MinGW\bin\gcc.exe
- gitk → C:\Installed\Git\cmd\gitk.exe
となる。
次のように変更する。
- C:\Installed\Git\bin
- C:\Installed\Git\usr\bin
- C:\Installed\MinGW\bin
git-guiとgitkが使えなくなるが、git自体は C:\Installed\GitW\bin\git.exe を経由して使えるはず。
後で試してみる。
[追記]Git bash(git for windowsのbash)を使いたいなら、
- C:\Installed\Git\usr\bin
- C:\Installed\MinGW\bin
だけでもいいかもしれない。bash, sh, その他は Git\usr\bin\ にあり、それは /usr/bin/ に見えている。/bin/sh, /bin/bash は必要だが、Git\bin\ にモノがあるから、パスはなくてもいいだろう。C:\Installed\Git\bin\ = /bin/ にパスを通さないと動かないものはないはず。[追記]
PowerShellのスタートアップファイル群
現状は次のようになっている。
- try $PROFILE
- C:\Users\hiyama\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- try $env:HOME\.profile.ps1
- try $env:HOME\configs\powershell\.profile.ps1
- C:\Users\hiyama\Work\configs\powershell\.profile.ps1
- try ${DOTFILES}\.profile.common.ps1
- try ${DOTFILES}\.profile.g.$group.ps1
- try ${DOTFILES}\.profile.h.$THIS_HOST.ps1
- C:\Users\hiyama\Work\configs\powershell\.profile.common.ps1
- try $DOTFILES/functions/common.dsrc.ps1
- C:\Users\hiyama\Work\configs\powershell/functions/common.dsrc.ps1
- C:\Users\hiyama\Work\configs\powershell\.profile.g.desktop.ps1
変更予定
- $PROFILE
- try ${PS_CONFIG_DIR}\.profile.ps1
- ${PS_CONFIG_DIR}\.profile.ps1
- try ${PS_CONFIG_DIR}\.profile.common.ps1
- try ${PS_CONFIG_DIR}\.profile.g.$GROUP.ps1
- try ${PS_CONFIG_DIR}\.profile.h.$THIS_HOST.ps1
この後で、関数を定義したユニット(非公式モジュール)を読み込む。${PS_CONFIG_DIR}/scripts/ とかの下にあるフィルを列挙してソート順に全部読みこむでいいと思う。読み込みは、${PS_CONFIG_DIR}\.profile.ps1 で
行えばいいか。
次で出来るだろう。
ls ${SCRIPTS_DIR}\*.ps1 | %{$_.fullname} | %{ . $_ }