如何配置Console2/Git Bash以在不同的选项卡中运行不同的脚本?
首先,我对可能不正确的术语表示歉意。我是在windows背景下做这件事的,只有windows和DOS知识来表达我的需求 背景 我使用Console2在两个不同的选项卡中运行Git Bash 这些选项卡设置为在不同的工作目录中启动,以便默认使用2个不同的存储库 我创建了一组别名来简化我使用GIT的方式。 这些文件当前位于我的用户文件夹中的.bash_配置文件中 .bash_配置文件似乎是旧DOS autoexec.bat文件的linux等效文件。因此,我的别名是为启动git sh.exe的任何选项卡设置的 有人告诉我,如果我将hg.exe(mercurial)放在路径上,那么我就能够以这种方式使用hg和Git。 事实证明这是正确的 我的目标是什么 我希望能够配置不同的选项卡,以使用不同的别名 在这个特定的例子中,我希望能够设置一个仍然运行GitBash(sh.exe)的HG选项卡,但它会初始化一组不同的别名 我想我需要如何配置Console2/Git Bash以在不同的选项卡中运行不同的脚本?,git,bash,console2,Git,Bash,Console2,首先,我对可能不正确的术语表示歉意。我是在windows背景下做这件事的,只有windows和DOS知识来表达我的需求 背景 我使用Console2在两个不同的选项卡中运行Git Bash 这些选项卡设置为在不同的工作目录中启动,以便默认使用2个不同的存储库 我创建了一组别名来简化我使用GIT的方式。 这些文件当前位于我的用户文件夹中的.bash_配置文件中 .bash_配置文件似乎是旧DOS autoexec.bat文件的linux等效文件。因此,我的别名是为启动git sh.exe的任何选项
- 为每组别名创建不同的“bat文件”李>
- 将Console2配置为使用不同的“bat文件”作为不同选项卡的autoexec
如何调整安装控制台2选项卡(当前启动sh.exe),使其在启动时传递要运行的“命令”文件的名称?您可以将脚本的名称传递给bash.exe,它将运行它。请记住,bash希望路径是UNIX样式的,例如,它希望路径像
/cygdrive/C/temp/myscript.sh
一样,而不是C:\temp\myscript.sh
有关调用bash的更多信息
(如果需要,可以使用cygpath.exe自动执行此翻译。我有一个示例。)
Update听起来像是要使用
--init file
或--rcfile
并在那里指定启动命令。您可以将脚本的名称传递给bash.exe,它将运行它。请记住,bash希望路径是UNIX样式的,例如,它希望路径像/cygdrive/C/temp/myscript.sh
一样,而不是C:\temp\myscript.sh
有关调用bash的更多信息
(如果需要,可以使用cygpath.exe自动执行此翻译。我有一个示例。)
更新听起来像是要使用
--init file
或--rcfile
并在那里指定启动命令。编写别名更合理,以便它们在不同的环境中表现不同。行为选择器可以是当前目录的名称,也可以是当前目录中是否存在标志文件;别名或脚本文件可能包含此代码,或者启动脚本可能源于不同的文件,或者只是根据选择器设置不同的路径
像这样,;在.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
或者像这样,
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
别名有很大不同吗?然后分别维护它们。或者将共享代码封装在双方都使用的公共源文件中。编写别名以便它们在不同环境中表现不同更为合理。行为选择器可以是当前目录的名称,也可以是当前目录中是否存在标志文件;别名或脚本文件可能包含此代码,或者启动脚本可能源于不同的文件,或者只是根据选择器设置不同的路径
像这样,;在.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
或者像这样,
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
别名有很大不同吗?然后分别维护它们。或者将共享代码封装在双方使用的公共源文件中。以下内容适用于我使用Console2的情况。它使用Cygwin的bash shell和Cygwin$HOME目录中的.bash_配置文件
<path_to_cygwin>\bin\bash.exe --login -i -c "cd /cygdrive/c/Cygwin/home/<username>; exec /bin/bash --init-file .bash_profile
\bin\bash.exe--login-i-c“cd/cygdrive/c/Cygwin/home/;exec/bin/bash--init file.bash_profile
只需在shell启动时将
.bash_profile
替换为您想要的源文件(显然使用您自己的用户名和路径)。以下内容适用于我使用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
\bin\bash.exe--login-i-c“cd/cygdrive/c/Cygwin/home/;exec/bin/bash--init file.bash\u profile
只需在shell启动时将
.bash\u profile
替换为您想要的源文件(显然使用您自己的用户名和路径)。使用console2作为带选项卡的包装器。下面是一个使用console2作为选项卡包装的方法。下面是一个传递文件名似乎确实执行了该文件。但是,它似乎取消了shell的交互性质,因此在它完成脚本时存在。我希望使用该脚本作为会话的初始化。FWIW我目前正在使用“C:\Program Files(x86)\Git\bin\sh.exe--login-I~/gitProfile.sh”尝试“C:\Program Files(x86)\Git\bin\sh.exe--login-I--init file~/gitProfile.sh”,但这也会导致立即退出。英德