登录Cygwin并在Windows中使用bat文件执行命令

时间:2012-08-09 05:56:26

标签: batch-file makefile cygwin

我使用的是Windows XP操作系统,cygwin安装在我的C盘中。

我需要直接登录cygwin到我的目录路径,该路径包含一个makefile以及同一目录中名为build.sh的bash脚本。所以我修改了原来的cygwin.bat文件并添加了如下所示的行。

@echo off

C:
chdir C:\cygwin\bin

bash --login "/cygdrive/E/scheme_31july/build/build.sh"

当我双击这个bat文件时,我可以看到我的脚本正在执行而不是在cygwin shell上,但在Windows cmd shell上,因此我得到“make”命令的错误,如“没有规则制作目标”,因为make捆绑了与cygwin。

当我使用默认的cygwin.bat文件显式登录cygwin并通过在cygwin shell中提供以下命令来执行我的脚本时,脚本执行时没有错误。

基本上我想编写一个bat文件,这样我就可以将它保存在我的电脑中,而不是手动打开cygwin提示符并输入如下命令:

$ cd /cygdrive/E/scheme_31july/build/
$ sh build.sh

它应该自动发生。我有可能这样做。

此致 Harshit

1 个答案:

答案 0 :(得分:4)

No rule to make target听起来更像是在错误的目录中执行make。 make本身似乎已经可用并按预期运行。

试试这个:

bash --login -c "cd /cygdrive/E/scheme_31july/build/ && sh build.sh"

这应该启动一个--login会话(这应该可以让你访问cygwin提示环境中你期望的所有设置和工具),然后执行给定的shell命令,这就是cd和sh你要求。您也可以将这两行写入单独的脚本文件,并将其名称传递给bash而不是build.sh的完整路径。

您还可以在cd文件中尝试C:\scheme_31july\buildbat,然后从那里执行bash。不确定bash是否会在进入登录会话时尝试更改路径。对于此方法和上述方法,您可以尝试在没有--login的情况下工作是否正常。

@echo off
C:
cd C:\scheme_31july\build
C:\cygwin\bin\bash.exe ./build.sh

我不确定您是否希望会话在此之后变为交互式。在上面的例子中,bash将在脚本完成后终止,甚至可能关闭窗口。您可能需要在read中添加build.sh以避免这种情况。如果您希望bash在执行某些命令后转为交互式,您可以尝试使用bash的--rcfile选项执行某些命令,然后再进行交互。