用于运行git bash脚本的Windows快捷方式

时间:2014-02-04 21:51:55

标签: windows shell desktop msysgit git-bash

假设我有一个运行服务器并安装了Git Bash的test.sh脚本,如何创建一个Windows快捷方式,我可以双击在前台的Git Bash中运行tesh.sh并允许我查看输出服务器?

4 个答案:

答案 0 :(得分:60)

Git bash已经是一个批处理文件,其内容与此类似:

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i"

如果要在shell的上下文中运行(并保持运行)shell脚本,请在命令行中指定它。诀窍是,当解释脚本文件名时,它使用 Windows路径,而不是sh / Git环境中的等效路径。

换句话说,要在Git shell中运行文件D:\temp\test.sh并使其保持运行,请创建此批处理文件:

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i -- D:\temp\test.sh"

另一方面,如果你想运行一个脚本并让你的shell恢复,你应该:

  1. 按原样打开shell
  2. 修改或创建~/.profile(尝试vi ~/.profile
  3. 添加以下行:~/test.sh(如果需要,请调整路径)
  4. 所以使用.profile看起来像这样:

    echo Executing .profile
    /bin/sh ~/test.sh
    

    test.sh看起来像这样:

    echo Hello, World!
    

    您将收到此提示:

    Welcome to Git (version 1.7.11-preview20120710)
    
    
    Run 'git help git' to display the help index.
    Run 'git help <command>' to display help for specific commands.
    Executing .profile
    Hello, World!
    
    ixe013@PARALINT01 ~
    $
    

答案 1 :(得分:20)

其他答案有效,但有一个较短的解决方案,完全回答问题,即:

  

如何创建可以双击运行的Windows快捷方式   Git Bash中的tesh.sh

回答是:将以下命令添加到快捷方式的Target:字段中:

"C:\Git\bin\sh.exe" -l "D:\test.sh"

enter image description here

其中,-l--login的缩写。

要更好地了解此命令的作用,请参阅有关Invoking Bash的官方GNU文档:

  
      
  • -l--login):使此shell行为就像登录直接调用一样。当shell是交互式的时,这是等效的   使用exec -l bash启动登录shell。当壳是   不是交互式的,将执行登录shell启动文件。   exec bash -lexec bash --login将取代当前   带有Bash登录shell的shell。
  •   

另请注意:

  • 您需要sh.exe的完整路径或将其放在PATH环境变量中(正如其他人已经指出的那样)。
  • 如果您确实需要在交互模式下强制进行shell调用,可以添加-i选项
  • 最后一个参数是必须执行的脚本的路径。此路径应采用Windows格式。

答案 2 :(得分:5)

我建议使用环境变量%ComSpec%,而不是cmd的绝对路径:

%ComSpec% /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

或甚至只是cmd命令,通常可从%PATH%获得:

cmd /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"

如果您C:\Program Files (x86)\Git\bin添加到PATH(这也是常见解决方案和 TortoiseGit 安装的案例之一),您可以使用:

cmd /c "sh --login -i"

答案 3 :(得分:5)

我认为最佳解决方案:

  • 调用正确的shell
  • 没有不必要的窗户
  • 之后调用bash脚本
  • 窗口将在脚本退出后保持打开状态

执行以下操作:

    例如,
  1. 在桌面上为mintty.exe创建一个快捷方式。它位于%installation dir%/Git/usr/bin/mintty.exe

  2. 修改快捷方式的属性并更改目标(保留路径):

  3. "C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'

    参数说明:

    -h always在脚本完成时保持窗口打开,因此当您仍在读取输出时窗口不会消失(如果您不需要读取输出并希望窗口自动关闭,则删除)。

    -l使这个shell表现得像登录直接调用一样。

    如果管道返回非零状态(more info),

    -e会立即退出。