Ярлык 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"
С другой стороны, если вы хотите запустите скрипт и получите свою оболочку обратно вы должны :
- откройте оболочку как есть
- изменить или создать
~/.profile
(попробоватьvi ~/.profile
) - добавьте следующую строку :
~/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"
здесь -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
немедленно завершает работу, если конвейер возвращает ненулевой статус (подробнее).