使用`where'命令find`gitk`程序但不能执行?

我试图在Windows上运行gitk ,但控制台给我:

'gitk' is not recognized as an internal or external command, operable program or batch file. 

但是,我可以做

 > where gitk C:\Program Files (x86)\Git\bin\gitk 

怎么会?

更新:窃取OP的评论:

感谢(冗长)的解释,对我来说最简单的解决方法是从旧的msysGit(1.9.5)版本移动到新的“Git for Windows”版本,它有一个适当的Windows gitk包装。


与大多数git命令不同, gitk是一个调用Tcl的shell脚本。

如果你检查gitk可执行文件本身,它的前几行是:

 #!/bin/sh # Tcl ignores the next line -*- tcl -*- \ exec wish "$0" -- "$@" 

(至少在我的Linux系统上是这样的; gitk的Windows安装程序可能会改变这一点。)

在类Unix系统上,第一行(称为“shebang” )告诉系统调用/bin/sh来执行文件,而不是直接执行。

第三行执行wish命令,它作为Tcl脚本执行脚本。

如果你在你的Windows系统上安装了Tcl,你应该可以像这样使用gitk作为Tcl脚本:

 C:\> tclsh "C:\Program Files (x86)\Git\bin\gitk" 

(免责声明:我没有试过这个。)

您也许可以将命令的名称从gitk更改为gitk.tcl并在Windows中设置文件关联,以便正确调用它。 (我有点惊讶,Windows的git安装程序没有为你做这个。)

在Windows上运行Tcl脚本的更多信息可以在这里找到。

这个问题讨论从上下文菜单中调用gitk而不是从命令行。