Программа `gitk` найдена с помощью команды `where`, но не может быть выполнена?

Я пытаюсь запустить gitk в Windows, но консоль выдает:

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

Но тогда я могу сделать

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

Как идет?


person Borek Bernard    schedule 09.08.2015    source источник
comment
Может быть, этот каталог не указан в вашем пути поиска по умолчанию? Что произойдет, если вы запустите его явно как C:\Program Files (x86)\Git\bin\gitk?   -  person larsks    schedule 09.08.2015
comment
Хороший указатель, я только что понял, что хотя большинство двоичных файлов в папке git\bin являются exe-файлами, gitk — это скрипт Linux bash. Мне, вероятно, нужно запустить его через git gui.   -  person Borek Bernard    schedule 09.08.2015
comment
git gui и gitk это две разные программы.   -  person Keith Thompson    schedule 09.08.2015
comment
Да, они есть, но git gui работали с консоли, а gitk затем можно было выполнить из диалогового окна Git GUI.   -  person Borek Bernard    schedule 09.08.2015


Ответы (1)


ОБНОВЛЕНИЕ: кража комментария OP:

Спасибо за (длинное) объяснение, самым простым решением для меня было перейти от старой версии msysGit (1.9.5) к более новой сборке «Git для Windows», которая имеет правильную оболочку Windows для gitk.


gitk, в отличие от большинства команд git, представляет собой сценарий оболочки, который вызывает Tcl.

Если вы изучите сам исполняемый файл gitk, его первые несколько строк:

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

(По крайней мере, так это выглядит в моей системе Linux; установщик Windows для gitk может это изменить.)

В 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 не сделал этого за вас.)

Дополнительную информацию о запуске Tcl-скриптов в Windows можно найти здесь .

И этот вопрос обсуждает вызов gitk в Windows из контекстного меню, а не из командной строки.

person Keith Thompson    schedule 09.08.2015
comment
Спасибо за (длинное) объяснение, самым простым решением для меня было перейти со старой версии msysGit (1.9.5) на более новую сборку Git для Windows, которая имеет правильную оболочку Windows для gitk. - person Borek Bernard; 09.08.2015
comment
Я украл ваш комментарий и добавил его в свой ответ. - person Keith Thompson; 09.08.2015