Как запустить окно 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это не настоящий каталог.

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


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

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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.