假设我有一个运行服务器并安装了Git Bash的test.sh脚本,如何创建一个Windows快捷方式,我可以双击在前台的Git Bash中运行tesh.sh并允许我查看输出服务器?
答案 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恢复,你应该:
~/.profile
(尝试vi ~/.profile
)~/test.sh
(如果需要,请调整路径)所以使用.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"
其中,-l
是--login
的缩写。
要更好地了解此命令的作用,请参阅有关Invoking Bash的官方GNU文档:
-l
(--login
):使此shell行为就像登录直接调用一样。当shell是交互式的时,这是等效的 使用exec -l bash
启动登录shell。当壳是 不是交互式的,将执行登录shell启动文件。exec bash -l
或exec bash --login
将取代当前 带有Bash登录shell的shell。
另请注意:
sh.exe
的完整路径或将其放在PATH
环境变量中(正如其他人已经指出的那样)。-i
选项答案 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)
我认为最佳解决方案:
执行以下操作:
在桌面上为mintty.exe
创建一个快捷方式。它位于%installation dir%/Git/usr/bin/mintty.exe
修改快捷方式的属性并更改目标(保留路径):
"C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
参数说明:
-h always
在脚本完成时保持窗口打开,因此当您仍在读取输出时窗口不会消失(如果您不需要读取输出并希望窗口自动关闭,则删除)。
-l
使这个shell表现得像登录直接调用一样。
-e
会立即退出。