なか日記

一度きりの人生、楽しく生きよう。

msysgit(1.7.6)の Git Bash Hereで開くシェルをckwに変更する

以前、msysgit(1.7.0.2) の git bash here で開くシェルを ckw に変更する - タイトルは未定で設定して1.7.4まではこの設定で問題なかったのですが、今日1.7.6にバージョンアップしたら動かなくなってたのでメモしておきます。

何で動かなくなったのか?

レジストリ

HKEY_CLASSES_ROOT\Directory\shell\git_shell\command に以下のような設定がされてます。

wscript "C:\Program Files (x86)\Git\Git Bash.vbs" "%1"

ここは今までと同じですね。

Git Bash.vbs
Option Explicit

Dim shell : Set shell = CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim gitdir : gitdir = Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\"))
Dim bash : bash = fso.BuildPath(gitdir, "bin\sh.exe")
Dim temp : temp = fso.GetSpecialFolder(2) ' Temporary folder
Dim linkfile : linkfile = fso.BuildPath(temp, fso.GetTempName() & ".lnk")

Dim link : Set link = shell.CreateShortCut(linkfile)
link.TargetPath = bash
link.Arguments = "--login -i"
link.WindowStyle = 1
If WScript.Arguments.Length > 0 Then link.WorkingDirectory = WScript.Arguments(0)
link.Save

Dim app : Set app = CreateObject("Shell.Application")
app.ShellExecute linkfile
WScript.Sleep 500
fso.DeleteFile linkfile

なるほど、今まではC:\Program Files (x86)\Git配下にあるショートカット「Git Bash.lnk」を起動していましたが動的にショートカットを作成して起動するように変わってますね。

で、どうしたか

マニュアル · deflis/ckw-mod Wiki · GitHubのckwのコマンドライン引数を参考にこうしちゃいました。

Git Bash.vbs
Option Explicit

Dim app : Set app = CreateObject("Shell.Application")
Dim arg
If WScript.Arguments.Length > 0 Then arg = " -cd """ & WScript.Arguments(0) & """"
app.ShellExecute "D:\Apps\Tools\ckw\ckw.exe", "-x ""C:\Program Files (x86)\Git\bin\sh.exe --login -i""" & arg
WScript.Sleep 500

力業過ぎる気がするけど、個人で使うんだし気にしない気にしない。

もちろん

git bash here で開くシェルを ckw に変更する - ぐるぐる〜を参考にレジストリを弄るのも、旧バージョンのGit Bash.vbsを使用するのもいいですね。

まぁ、レジストリを弄るのが余計な処理(vbsからの起動)を経由しないので精神衛生上はいいかもしれませんね。