如何配置 Console2/Git Bash 在不同选项卡中运行不同脚本?

发布于 2024-12-03 07:17:11 字数 806 浏览 1 评论 0原文

首先,我对可能不正确的术语表示歉意。我来自 Windows 背景,只有 Windows 和 DOS 知识来表达我的需求。

背景

我正在使用 Console2 在 2 个不同的选项卡中运行 Git Bash。

这些选项卡设置为在不同的工作目录中启动,以便默认针对 2 个不同的存储库工作。

我创建了一堆别名来简化我使用 GIT 的方式。 这些当前驻留在我的用户文件夹中的 .bash_profile 中。

.bash_profile 似乎是旧 DOS autoexec.bat 文件的 Linux 等效项。因此,我的别名是为启动 git sh.exe 的任何选项卡设置的。

有人告诉我,如果我将 hg.exe (mercurial) 放在路径上,那么我就可以通过这种方式使用 hg 和 Git。 事实证明这是正确的。

我的目标是什么

我希望能够配置不同的选项卡以使用不同的别名。

在这种特定情况下,我希望能够设置一个 HG 选项卡,该选项卡仍然运行 Git Bash (sh.exe),但会初始化一组不同的别名。

我相信我需要

  • 为每组别名创建一个不同的“bat 文件”。
  • 配置 Console2 以使用不同的“bat 文件”作为不同选项卡的自动执行。

问题

如何调整设置 Console2 选项卡(当前启动 sh.exe),以便它传递“命令”文件的名称以在启动时运行?

Firstly, my apologies for possibly incorrect terminology. I'm coming at this from a windows background and have only Windows and DOS knowledge with which to express my needs.

Background

I am using Console2 to run Git Bash in 2 different tabs.

These tabs are setup to start in different working directories so as to default to working against 2 different repositories.

I have created a bunch of aliases to simplify the way I use GIT.
These currently reside in my .bash_profile in my user folder.

The .bash_profile appears to be the linux equivalent of an old DOS autoexec.bat file. As such my aliases are setup for any tab which launches the git sh.exe.

I have been told that if I put the hg.exe (mercurial) on the path, then I would be able to use both hg and Git In this way.
This proved to be correct.

What are my goals

I would like to be able to configure different tabs to work with different aliases.

In this specific case, I'd like to be able to setup an HG tab which still runs Git Bash (sh.exe), but which initializes a different set of aliases.

I believe I need to

  • Create a different "bat file" for each set of aliases.
  • Configure Console2 to use different "bat files" as autoexec for different tabs.

The Question

How do I tweak a setup Console2 tab (that currently launches sh.exe) so that it passes the name of a "command" file to run on startup?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

失退 2024-12-10 07:17:11

您可以将脚本的名称传递给 bash.exe,它就会运行它。请记住,bash 会期望路径采用 UNIX 样式 - 例如,而不是 C:\temp\myscript.sh 它会希望它像 /cygdrive/c/ temp/myscript.sh

有关调用 bash 的更多信息参见 bash 手册

(如果需要,您可以使用 cygpath.exe 来自动执行此翻译。我有一个 我的博客上的示例。)

更新 听起来您想使用 --init-file--rcfile 并在其中指定启动命令。

You can pass the name of a script to bash.exe and it'll run it. Bear in mind though that bash will expect the path to be in the UNIX style - for example instead of C:\temp\myscript.sh it will want it like so /cygdrive/c/temp/myscript.sh.

More information on invoking bash in the bash manual.

(You can use cygpath.exe to automate this translation if you want. I have an example on my blog.)

Update Sounds like you want to use --init-file or --rcfile and specify startup commands there.

再见回来 2024-12-10 07:17:11

恕我直言,编写别名以便它们在不同环境中表现不同更有意义。行为选择器可以是当前目录的名称,或者当前目录中是否存在标志文件;别名或脚本文件可以包含此代码,或者启动脚本可以获取不同的文件,或者只是根据选择器以不同的方式设置 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 别名有很大不同吗?然后分别维护。或者将共享代码封装在双方使用的公共源文件中。

Makes more sense IMHO to write the aliases so that they behave differently in different environments. The behavior selector could be the current directory's name, or the presence of a flag file in the current directory; the alias or script file could contain this code, or the startup script could source different files, or simply set up the PATH differently depending on the selector.

Like this; in your .bashrc, add

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

or like this;

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

or like this;

test -e .git && VC=git

and then on the command line, you can set VC=hg at any time, provided your scripts (or aliases; but I would recommend functions, or scripts) look something like

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

This also depends on how much shared code you have in the aliases; does the hg alias for something look very different from the git alias for something? Then maintain them separately. Or encapsulate the shared code in a common source file used by both.

你是暖光i 2024-12-10 07:17:11

以下内容对我使用 Console2 有效。它使用 Cygwin 的 bash shell 和我的 cygwin $HOME 目录中的 .bash_profile。

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

只需将 .bash_profile 替换为 shell 启动时要获取的文件(显然使用您自己的用户名和路径)。

The following works for me using Console2. It uses Cygwin's bash shell and the .bash_profile in my cygwin $HOME directory.

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

Just replace .bash_profile with the file you want to source when the shell starts (and obviously use your own username and paths).

莳間冲淡了誓言ζ 2024-12-10 07:17:11

使用 console2 作为带有选项卡的包装器。这是用于设置的文章

Use console2 as wrapper with tabs. Here is an article for setting up

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文