如何从DOS命令行启动Git Bash?


106

我希望有一个简单的问题,但是我还没有找到答案。我想从DOS批处理文件启动Git Bash。这是我到目前为止尝试过的:

  1. 从Win 7开始按钮启动Git Bash
  2. 使用CTRL + ALT + DEL将进程标识为“ sh.exe”
  3. 使用启动命令从批处理文件启动sh.exe

    start sh.exe
    

但是,这不会启动完整的Git Bash环境。Git Bash通常在标题栏中带有“ MINGW32”,但sh.exe拥有...的完整路径Git\bin\sh.exe。在我看来,有些覆盖或依赖项可能是我不知道的,因此也需要加载(拉入?导入?)。

这是我通过搜索网络获得的最佳结果之一,但对我来说并不完全有意义,我不确定它是否完全适用于我的情况:

从Windows Cmd行运行git:密钥文件在哪里?

我是DOS批处理脚本世界的初学者。


1
好吧,它实际上不是DOS命令行,除非:(a)您遇到了某种时间异常,并且正在使用Windows 9x / ME,这command.com是OS附带的唯一外壳(b)您使用的是32-位NT系统,要么调用command.com自己,要么一个旧程序为您完成。请参阅Windows中的CMD和命令提示符有什么区别?有关更多信息。
SamB

Answers:


125

如果要从批处理文件启动:

  • 对于x86

    start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login
    
  • 对于x64

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    

谢谢@Endoro!尽管@Klas Mellbourn的答案对于Powershell是正确的,但由于我是从DOS批处理文件运行的,您的答案更正确。添加“ start”指令会使程序异步执行,这正是我所需要的!竖起大拇指!
Eric Hepperle-CodeSlayer2010

14
从批处理文件中打开它后,是否可以在Git批处理窗口中键入和执行命令?
尼克

1
@OviC您确定编辑正确吗?“程序文件(x86)”仅在32位程序的x64体系结构下存在。
Drunix '16

@Drunix是正确的,在x86系统中没有“ Program Files(x86)\”路径。我做了回滚。谢谢。
Endoro '16

如果未将其安装在系统驱动器上怎么办?如果程序文件中未安装该怎么办?
Michael Kruglos

44

我不确定“完整的Git Bash环境”到底是什么意思,但是如果我这样做,我会得到很好的提示

"C:\Program Files\Git\bin\sh.exe" --login

在PowerShell中

& 'C:\Program Files\Git\bin\sh.exe' --login

--login开关使外壳程序执行登录外壳程序启动文件


谢谢@Klas Mellbourn。您的答案对Powershell很有用,但是不像Endoro的答案那样添加“ start”指令,它会停止执行下一个程序,直到退出shell,这是不希望的行为,否则我会投票赞成您。
Eric Hepperle-CodeSlayer2010

我使用Console2来window cmd,这会导致奇怪的行为。我将其放在.bat文件中,现在一切正常:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault 2015年

25

我更喜欢使用git-bash.exe而不是sh.exe。

start "" "%ProgramFiles%\Git\git-bash.exe" -c "tail -f /c/Windows/win.ini"

您可以/usr/bin/bash --login -i在结束通话时停止关闭窗口。

start "" "%ProgramFiles%\Git\git-bash.exe" -c "echo 1 && echo 2 && /usr/bin/bash --login -i"

注意:我不确定这是否是一种好方法:)


4
好的答案,但是git-bash窗口立即关闭。您知道命令执行完后如何禁用自动关闭功能吗?
2016年

@Mark谢谢马克。我在上面的答案中添加了一个示例。不幸的是,我不确定该如何以正确的方式执行此操作,因为我不是Windows人士:)
kujiy

1
[代码]开始“”“%ProgramFiles%\ Git \ git-bash.exe” [/代码]效果很好!
PauAI

@PauAI 2018现在...我start "" "%ProgramFiles%\Git\git-bash.exe"从管理员命令行尝试过,尽管它在新窗口中弹出Git Bash,但键入一个简单的命令(如ls结果)却没有输出。该方法似乎不允许执行Linux命令。...编辑:工作,只是花了很长时间(2分钟)来运行ls。然后ls再次运行不到1秒。... 奇怪的。
Eric Hepperle-CodeSlayer2010 '18

8

我更喜欢将git放入环境变量中,然后调用

c:\Users\[myname]>sh
or 
c:\Users\[myname]>bash

创建环境变量(Win7)的步骤

  • 在桌面上,右键单击“计算机”图标。
  • 从上下文菜单中选择“属性”。
  • 单击高级系统设置链接。
  • 单击环境变量。
  • 在“用户变量”部分中,单击“新建”按钮,将变量名设置为GIT_HOME,将值设置为(folder-where-you-installed-git)。

    • 对我来说是c:\tools\git,其他人可能有C:\Program Files\Git
  • 找到PATH环境变量并选择它。单击编辑。(如果PATH环境变量不存在,请单击“新建”)。

  • 在“编辑”窗口中,添加一个新值 %GIT_HOME%%GIT_HOME%\bin。单击确定。单击确定关闭所有剩余的窗口。
  • [确保关闭要用于git的CMD]
  • 打开新的命令提示符,然后键入shbashgit-bash

2
谢谢!我能够使用GIT_HOME作为C:\Program Files\Git,并git-bash从CMD 键入内容。同样,奇怪的是,尽管您只需要键入PATH即可查看其内容,但要查看此git自定义变量的内容,您必须键入echo %GIT_HOME%
Eric Hepperle-CodeSlayer2010 '18

谢谢,这是很棒的补充。除此之外,当您拥有GIT_HOME变量并使用git-bash命令(或git-cmd)时,它将在新窗口中将其打开。如果添加到“ PATH”环境变量,它将在该现有窗口中切换。您也可以键入exitgit bash的“注销”,并且仍然保留DOS提示符。
Keith E. Truesdell

4
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

Git bash将打开。


3

https://stackoverflow.com/a/33368029/15789

我在这里发布了答案。

打开Windows命令窗口,然后执行此脚本。如果您的工作目录中有更改,它将在您的工作目录中打开一个bash终端,并显示当前的git状态。它通过调用exec bash保持bash窗口打开。

如果您有多个项目,则可以使用不同的项目文件夹创建此脚本的副本,然后从主批处理脚本调用它。


3

我使用上面的信息来帮助创建一个更永久的解决方案。下面将创建别名sh,您可以使用它打开Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat

谢谢dpate!我将您的echo语句粘贴到命令行中并运行,sh并启动了git-bash窗口,我能够完美地运行命令。可以在您的答案中添加一些细节来解释其工作原理吗?我宁愿学习钓鱼的工作方式,也不愿有人给我一条鱼,而且我认为这对寻求良好答案的其他人也会有所帮助。谢谢
埃里克·赫珀勒-CodeSlayer2010 '18

0

Endoro的答案已经老化,我无法发表评论;

# if you want to launch from a batch file or the command line:

start "" "%ProgramFiles%\Git\bin\sh.exe" --login

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.