Как запустить окно Git Bash с определенным рабочим каталогом с помощью скрипта?

86

Как я могу запустить новое окно Git Bash с указанным рабочим каталогом с помощью сценария (либо Bash, либо пакета Windows)?

Моя цель - запустить несколько окон Git Bash из одного скрипта, каждое из которых настроено в другой рабочий каталог. Таким образом, я могу быстро приступить к работе после загрузки компьютера, вместо того, чтобы открывать окна Git Bash и перемещать каждое из них в правильный рабочий каталог.

Я не спрашиваю, как изменить рабочий каталог по умолчанию, как в этом вопросе , а как запустить одно или несколько окон терминала с разными рабочими каталогами из сценария.

голокронный ткач
источник
1
@StevenVascellaro Отредактированный вопрос, чтобы объяснить, почему это не обман.
holocronweaver
Это имеет смысл. Я отозвал свой повторный голос.
Stevoisiak

Ответы:

62

Другой вариант - создать ярлык со следующими свойствами:

введите описание изображения здесь

Цель должна быть:

"% SYSTEMDRIVE% \ Program Files (x86) \ Git \ bin \ sh.exe" --login

Start in - это папка, в которой вы хотите запускать приглашение Git Bash.

Дрю Ноукс
источник
1
Престижность! Никогда не знал, Start inчто это связано с рабочим каталогом, в котором, по мнению программы, он находится.
CausingUnderflowsEverywhere,
Это самый простой способ. Впоследствии я прикрепил этот ярлык к панели задач, затем к Windows + 1, я оставил это как первый элемент панели задач, напрямую открывает репо с помощью git-bash.
Hareen Laks
48

Git Bash использует cmd.exeдля своего терминала и расширения от MSYS / MinGW, которые предоставляются sh.exeсвоего рода cmd.exeоболочкой. В Windows вы запускаете новый терминал с помощью startкоманды.

Таким образом, сценарий оболочки, запускающий новый терминал Git Bash с определенным рабочим каталогом, выглядит так:

(cd C:/path/to/dir1 && start sh --login) &
(cd D:/path/to/dir2 && start sh --login) &

Эквивалентный пакетный сценарий Windows:

C:
cd \path\to\dir1
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login 
D:
cd \path\to\dir2
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login 

Чтобы получить тот же шрифт и размер окна, что и в Git Bash, запущенном из меню «Пуск», проще всего скопировать настройки ярлыка меню «Пуск» в значения по умолчанию для командной консоли (чтобы изменить значения по умолчанию, откройте cmd.exe, щелкните левой кнопкой мыши значок в верхнем левом углу и выберите По умолчанию).

голокронный ткач
источник
1
Это работает для меня: cdв каталог, который я хочу запустить Git Bash, а затем выполнение startкоманды в вашем примере действительно даст мне терминал Git Bash в этом каталоге. Вы уверены, что не делаете cd $HOME(или cdбез аргументов) где-то в ваших rc-файлах bash? (Например .bashrc, .profile...) Также помните букву диска. Если вы хотите запустить Git Bash на X:диске, то выполнение cd x:\pathэтого не сработает, вам нужно сделать, x:а потом и cd \pathраньшеstart
janos
1
Ты прав! Я упустил тот факт, что вы просто не можете cd x:\path. Соответственно отредактирую свое решение.
holocronweaver
Прекрасное решение! Позвольте мне только добавить, что cmd.exeнастройки по умолчанию не совпадают с настройками Git Bash по умолчанию при установке Git Bash! И вы должны понимать разницу между настройками по умолчанию ( Defaultsиз контекстного меню) и текущими ( Properties). Итак, что я сделал: (1) открыть Git Bash, выбрать Properties(текущие настройки), (2) настроить его так, как я хочу (шрифт, размер окна + положение), (3) открыть cmd.exe, выбрать Defaults, (4 ) скопируйте и вставьте настройки из Git Bash в cmd.exe. Затем OKв cmd.exeнастройках, Cancelв Git Bashнастройках и вуаля!
Trejder
48

Попробуйте опцию --cd =. Предполагая, что ваш GIT Bash находится в C: \ Program Files \ Git, это будет:

"C:\Program Files\Git\git-bash.exe" --cd="e:\SomeFolder"

Если используется внутри раздела реестра, параметр папки может быть предоставлен с помощью% 1:

"C:\Program Files\Git\git-bash.exe" --cd="%1"

Майк Ковальски
источник
Как мне использовать %1параметр реестра?
Erasmus Cedernaes
1
текущий ответ так уж устарел, этот должен быть тем!
Küzdi Máté
Это похоже на пакетный файл. (.bat)
Франта
26

Давайте еще добавим ответ от @Drew Noakes:

Цель:

"C:\Program Files\Git\git-bash.exe" --cd=C:\GitRepo

Параметр cdдолжен быть одним из вариантов указания рабочего каталога.

Также обратите внимание, что у меня нет никаких --loginпараметров: вместо этого я использую другое дополнительное приложение, предназначенное только для ключей SSH: Pageant (агент аутентификации PuTTY) .

Начинать:

C:\GitRepo

Точно так же, как @Drew Noakes упомянул / показал здесь раньше, я тоже его использую.

Быстрая клавиша:

Ctrl + Alt + B

Такие ярлыки - еще одна менее известная функция Windows. Но есть ограничение: чтобы ярлык вступил в силу, его необходимо разместить где-нибудь в подкаталоге пользователя: Рабочий стол в порядке.

Если вы не хотите, чтобы он был видимым, но при этом можно было активировать, поместите этот .lnkфайл, то есть в папку быстрого запуска, поскольку этот каталог предназначен для таких ярлыков. (неважно, отображается ли на рабочем столе) # 76080 # 3619355

"\Application Data\Microsoft\Internet Explorer\Quick Launch\"
Франта
источник
12

Кроме того, Win10 дает вам возможность открыть git bash из вашего рабочего каталога, щелкнув правой кнопкой мыши папку и выбрав здесь GitBash.

введите описание изображения здесь

монкра
источник
4

Windows 10

Это в основном ответ @ lengxuehx, но обновленный для Win 10, и предполагается, что ваша установка bash из Git Bash для Windows из официальных загрузок git .

cmd /c (start /b "%cd%" "C:\Program Files\GitW\git-bash.exe") && exit

В итоге я использовал это после того, как потерял пункты контекстного меню для Git Bash в качестве моей команды для запуска из настроек реестра. Если вам это интересно, я сделал следующее:

  1. Создайте новый ключ с именем Bashв shellключе наHKEY_CLASSES_ROOT\Directory\Background\shell
  2. Добавьте строковое значение Icon(не новый ключ!), Которое представляет собой полный путь к вашему git-bash.exe, включая часть git-bash.exe. Возможно, вам придется заключить это в кавычки.
  3. Измените значение по умолчанию Bashдля текста, который вы хотите использовать в контекстном меню введите описание изображения здесь
  4. Добавить подключа к Bashвызываемомуcommand
  5. Измените commandзначение по умолчанию наcmd /c (start /b "%cd%" "C:\Program Files\GitW\git-bash.exe") && exit введите описание изображения здесь

Затем вы сможете закрыть реестр и начать использовать Git Bash из любого места, где есть настоящий каталог. Например, This PCэто не настоящий каталог.

введите описание изображения здесь

kayleeFrye_onDeck
источник
3
Для записи, запись баш мерзавец по умолчанию в реестре на HKEY_CLASSES_ROOT\Directory\Background\shell\git_shell\commandэто"C:\Program Files\Git\git-bash.exe" "--cd=%v."
Ferrybig
Ницца! Спасибо, @Ferrybig! ^ _ ^
kayleeFrye_onDeck
4

Это команда, которая может быть выполнена непосредственно в Run dialog box(ярлык win+ R), а также хорошо работает в виде .batсценария:

cmd /c (start /d "/path/to/dir" bash --login) && exit
lengxuehx
источник
1
он запускает новый cmd в Windows 10
kyb
1
@kyb это должно быть /bдля Win 10
kayleeFrye_onDeck
@kyb Я дал ответ, который является модификацией ответа lengxuehx, на случай, если вам или кому-то еще интересно: stackoverflow.com/a/39779451/3543437
kayleeFrye_onDeck
3

Я не знаком с Git Bash, но предполагая, что это оболочка git (например, git-sh), находящаяся в /path/to/my/gitshellи ваша любимая программа терминала называется `myterm ', вы можете написать следующее:

(cd dir1; myterm -e /path/to/my/gitshell) &
(cd dir2; myterm -e /path/to/my/gitshell) &
...

Обратите внимание, что параметр -eдля выполнения может иметь другое имя в зависимости от вашей любимой программы терминала.

Маркус Рикерт
источник
Спасибо, ваш ответ заставил меня задуматься в правильном направлении! Так я поступаю в Linux, но я не мог придумать эквивалент в MS Windows ... до сих пор! Для Git Bash mytermэто cmd.exe с дополнениями через MSYS / MinGW. Чтобы запустить новый cmd, вы используете специальную для Windows startкоманду, за которой следует путь к Git Bash, sh.exeа затем любые параметры командной строки, которые вам нравятся. Мой ответ дает подробности.
holocronweaver
-1

Возможно, я дал неверное направление, но мне нравится этот трюк.

Используя проводник Windows, указав любой каталог, который вы хотите, введите «cmd» в адресной строке, он откроет командную строку Windows в этом каталоге.

Если у вас есть каталог «Git» на вашем пути, таким же образом вы можете ввести «git-bash» в адресной строке, и в этом каталоге откроется оболочка Git.

Адауто Бронзатти
источник