使用`where` 命令找到`gitk` 程序但无法执行?

`gitk` program found using the `where` command but cannot be executed?

我正尝试在 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 的评论:

Thanks for a (lengthy) explanation, the easiest fix for me was to move from the old msysGit (1.9.5) version to the newer "Git for Windows" builds which has a proper Windows wrapper for gitk.


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

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

#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "[=10=]" -- "$@"

(至少在我的 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 上 运行ning Tcl 脚本的更多信息,请参见 here

this question 讨论了从上下文菜单而不是从命令行在 Windows 上调用 gitk