Как настроить Console2/Git Bash для запуска разных скриптов на разных вкладках?

Во-первых, мои извинения за возможно неправильную терминологию. Я пришел к этому из опыта работы с Windows, и у меня есть только знания Windows и DOS, с помощью которых я могу выразить свои потребности.

Фон

Я использую Console2 для запуска Git Bash на двух разных вкладках.

Эти вкладки настроены для запуска в разных рабочих каталогах, чтобы по умолчанию работать с двумя разными репозиториями.

Я создал несколько псевдонимов, чтобы упростить использование GIT. В настоящее время они находятся в моем .bash_profile в моей пользовательской папке.

.bash_profile выглядит как linux-эквивалент старого файла autoexec.bat для DOS. Таким образом, мои псевдонимы настроены для любой вкладки, которая запускает git sh.exe.

Мне сказали, что если я поставлю hg.exe (mercurial) на путь, то смогу использовать таким образом и hg, и Git. Это оказалось правильным.

Каковы мои цели

Я хотел бы иметь возможность настроить разные вкладки для работы с разными псевдонимами.

В этом конкретном случае я хотел бы иметь возможность настроить вкладку HG, которая по-прежнему запускает Git Bash (sh.exe), но которая инициализирует другой набор псевдонимов.

я считаю, что мне нужно

  • Создайте отдельный «bat-файл» для каждого набора псевдонимов.
  • Настройте Console2 для использования разных «bat-файлов» в качестве автозапуска для разных вкладок.

Вопрос

Как настроить вкладку Console2 установки (которая в данный момент запускает sh.exe), чтобы она передала имя «командного» файла для запуска при запуске?


person Rory Becker    schedule 08.09.2011    source источник


Ответы (4)


Вы можете передать имя сценария в bash.exe, и он запустит его. Имейте в виду, однако, что bash будет ожидать, что путь будет в стиле UNIX - например, вместо C:\temp\myscript.sh он захочет, чтобы он был таким, как /cygdrive/c/temp/myscript.sh.

Подробнее о вызове bash в руководстве по bash.

(Вы можете использовать cygpath.exe для автоматизации этого перевода, если хотите. У меня есть пример в моем блоге.)

Обновить Похоже, вы хотите использовать --init-file или --rcfile и указать там команды запуска.

person Duncan Smart    schedule 08.09.2011
comment
Кажется, что передача имени файла действительно выполняет этот файл. Однако кажется, что он отменяет интерактивный характер оболочки и, следовательно, существует после завершения сценария. Я надеялся использовать скрипт в качестве инициализации для моего сеанса. - person Rory Becker; 08.09.2011
comment
FWIW В настоящее время я использую C:\Program Files (x86)\Git\bin\sh.exe --login -i ~/gitProfile.sh - person Rory Becker; 08.09.2011
comment
Пробовал C:\Program Files (x86)\Git\bin\sh.exe --login -i --init-file ~/gitProfile.sh, но это также вызывает немедленный выход. Ведь на этот раз скрипт даже не выполняется. Я убедился, что он был выполнен в предыдущий раз, сделав паузу в середине с помощью команды чтения. - person Rory Becker; 08.09.2011
comment
также пробовал --rcfile. Тот же эффект, что и --init-file. По сути, оболочка просто завершает работу, по-видимому, ничего не делая :( - person Rory Becker; 08.09.2011

ИМХО имеет смысл написать псевдонимы так, чтобы они вели себя по-разному в разных средах. Селектор поведения может быть именем текущего каталога или наличием файла флага в текущем каталоге; псевдоним или файл сценария может содержать этот код, или сценарий запуска может содержать разные файлы, или просто по-разному устанавливать PATH в зависимости от селектора.

Как это; в .bashrc добавьте

test -e .git && . ~/bin/gitalises.sh
test -e .hg && . ~/bin/hgaliases.sh

или вот так;

test -e .git && PATH=~/bin/git:$PATH   # put co for git in ~/bin/git/co
test -e .hg && PATH=~/bin/hg:$PATH     # and ditto for ~/bin/hg/co

или вот так;

test -e .git && VC=git

а затем в командной строке вы можете установить VC=hg в любое время, если ваши сценарии (или псевдонимы; но я бы рекомендовал функции или сценарии) выглядят примерно так

case $VC in
  git) git --gobble=gook "$@";;
  hg) hg bbq a/c "$@";;
  *) echo "err um uh" >&2 ;;
esac

Это также зависит от того, сколько общего кода у вас есть в псевдонимах; Псевдоним hg для чего-то сильно отличается от псевдонима git для чего-то? Затем сохраните их отдельно. Или инкапсулируйте общий код в общий исходный файл, используемый обоими.

person tripleee    schedule 08.09.2011
comment
у меня есть около 20-30 различных псевдонимов, и я все время создаю больше. То, что вы предлагаете, вполне может сработать, но требует много работы для поддержки этих псевдонимов, некоторые из которых не имеют эквивалентов в разных средах. Короче говоря, это кажется слишком сложным и трудным в обслуживании. - person Rory Becker; 08.09.2011
comment
Наоборот, модульность упрощает, а не усложняет. Я обновлю с некоторыми примерами. - person tripleee; 08.09.2011
comment
Мне интересно увидеть такие примеры, но ваша первоначальная точка зрения, похоже, предполагает единый набор псевдонимов, которые понимают свою среду, а не несколько наборов псевдонимов, которые я искал. Может быть, я вас неправильно понимаю, но ваше первоначальное предложение кажется менее модульным, чем мое? - person Rory Becker; 08.09.2011

Следующее работает для меня, используя Console2. Он использует оболочку Cygwin bash и .bash_profile в моем каталоге cygwin $HOME.

<path_to_cygwin>\bin\bash.exe --login -i -c "cd /cygdrive/c/Cygwin/home/<username>; exec /bin/bash --init-file .bash_profile

Просто замените .bash_profile на файл, который вы хотите получить при запуске оболочки (и, очевидно, используйте свое собственное имя пользователя и пути).

person Fish    schedule 04.12.2012

Используйте console2 в качестве оболочки с вкладками. Вот статья по настройке

person milkovsky    schedule 19.02.2013