Ярлык Windows, чтобы выполнить git bash-скрипт

предполагая, что у меня есть test.sh скрипт, который запускает сервер и установленный Git Bash, как создать ярлык Windows, который можно дважды щелкнуть для запуска tesh.sh в Git Bash на переднем плане и позволяет мне видеть вывод сервера?

4 ответов


Git bash уже является пакетным файлом с содержимым, подобным этому:

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i"

если вы хотите выполнить (и не останавливать) shell-скрипт в контексте оболочки, укажите его в командной строке. Хитрость заключается в том, что при интерпретации имени файла сценария он использует путь Windows, не эквивалентный путь в среде sh/Git.

другими словами, запустить файл D:\temp\test.sh в оболочке Git и оставьте ее запущенной, создайте этот пакетный файл :

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i -- D:\temp\test.sh"

С другой стороны, если вы хотите запустите скрипт и получите свою оболочку обратно вы должны :

  1. откройте оболочку как есть
  2. изменить или создать ~/.profile (попробовать vi ~/.profile)
  3. добавьте следующую строку : ~/test.sh (ajdust путь, если это необходимо)

С .profile это выглядит так :

echo Executing .profile
/bin/sh ~/test.sh

и test.sh это выглядит так :

echo Hello, World!

вы получите это приглашение:

Welcome to Git (version 1.7.11-preview20120710)


Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
Executing .profile
Hello, World!

ixe013@PARALINT01 ~
$

другие ответы работают, но есть короткое решение, которое полностью отвечает вопрос, который был:

как создать ярлык Windows, который я могу дважды щелкнуть, чтобы запустить tesh.sh в Git Bash

на ответ is: добавьте следующую команду в Target: поле сочетание клавиш:

"C:\Git\bin\sh.exe" -l "D:\test.sh"

enter image description here

здесь -l короткие для --login.

чтобы лучше понять, что делает эта команда, проконсультируйтесь с официальными документами GNU о Вызов Баш:

  • -l (--login): сделайте так, чтобы эта оболочка действовала так, как если бы она была непосредственно вызвана login. Когда оболочка является интерактивной, это эквивалентно чтобы запустить оболочку входа с помощью exec -l bash. Когда раковина не интерактивный, будут выполняться файлы запуска оболочки входа в систему. exec bash -l или exec bash --login заменит электрический ток оболочка с оболочкой входа в систему Bash.

Также обратите внимание, что:

  • вам либо нужен полный путь к sh.exe или в PATH переменная окружения (как уже указывали другие).
  • Если вам действительно нужно заставить вызов оболочки в интерактивном режиме, вы можете добавить -i опции
  • последний параметр-это путь к скрипту, который должен быть выполнен. Этот путь должен быть в Формат Windows.

Я бы рекомендовал использовать переменную среды %ComSpec%, вместо абсолютного пути к cmd:

%ComSpec% /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

или даже просто cmd команда, которая обычно доступна из %PATH%:

cmd /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

если C:\Program Files (x86)\Git\bin добавил PATH (что также является общим решением и одним из случаев на TortoiseGit установки) вы можете использовать только:

cmd /c "sh --login -i"

лучшее решение на мой взгляд:

вызывает правую оболочку, никаких ненужных окон и вызывает скрипт bash после этого; окно останется открытым после выхода скрипта:

  • создать ярлык to mintty.exe на рабочем столе, например

  • изменить свойства ярлыка и изменить цель (сохранить путь):

"C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

описание параметров:

-h always сохраняет окно открытым, когда скрипт закончен, поэтому окно не исчезнет, пока вы все еще читаете вывод (удалите, если вам не нужно читать вывод и хотите, чтобы окно закрывалось автоматически).

-l заставляет эту оболочку действовать так, как если бы она была непосредственно вызвана login.

-e немедленно завершает работу, если конвейер возвращает ненулевой статус (подробнее).