2

首先,我为可能不正确的术语道歉。我来自 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。事实证明这是正确的。

我的目标是什么

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

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

我相信我需要

  • 为每组别名创建不同的“bat 文件”。
  • 将 Console2 配置为使用不同的“bat 文件”作为不同选项卡的 autoexec。

问题

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

4

4 回答 4

0

使用 console2 作为标签的包装器。这是一篇关于设置的文章

于 2013-02-19T10:51:33.060 回答
0

以下适用于我使用 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 启动时替换为您想要获取的文件(并且显然使用您自己的用户名和路径)。

于 2012-12-04T14:59:39.917 回答
0

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

有关在 bash 手册中调用 bash 的更多信息。

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

更新听起来你想使用--init-fileor--rcfile并在那里指定启动命令。

于 2011-09-08T10:24:36.520 回答
0

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

于 2011-09-08T11:06:56.350 回答