Batch file 在windows中登录Cygwin并使用bat文件执行命令

Batch file 在windows中登录Cygwin并使用bat文件执行命令,batch-file,makefile,cygwin,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文件时,我可以看到我的脚本

我使用的是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与cygwin捆绑在一起时,“make”命令出现错误,如“No rule to make target”

当我使用默认的cygwin.bat文件显式登录到cygwin并通过在cygwin shell中发出以下命令来执行脚本时,脚本将无错误地执行

基本上,我想写一个bat文件,这样我就可以把它放在电脑的任何地方,而不是手动打开cygwin提示符并键入如下命令:

$ cd /cygdrive/E/scheme_31july/build/
$ sh build.sh
它应该自动发生。我认为这是可能的

问候,,
Harshit

没有规则使目标
听起来更像是在错误的目录中执行make
make
本身似乎可用并按预期运行

试试这个:

bash --login -c "cd /cygdrive/E/scheme_31july/build/ && sh build.sh"
这将启动一个
--login
会话(该会话将允许您访问cygwin提示符环境中所需的所有设置和工具),然后执行给定的shell命令,这是您请求的cd和sh。您还可以将这两行写入一个单独的脚本文件,并将其名称传递给bash,而不是传递给
build.sh
的完整路径

您还可以尝试将
cd
放入
bat
文件中的
C:\scheme\u 31july\build
,然后从那里执行
bash
。不确定
bash
是否会在进入登录会话时尝试更改路径。您可以尝试在不使用
--login
的情况下工作,无论是这种方法还是上述方法

@echo off
C:
cd C:\scheme_31july\build
C:\cygwin\bin\bash.exe ./build.sh
我不确定您是否希望会话在此之后变成交互式。在上述情况下,bash将在脚本完成后终止,甚至可能关闭窗口。您可能需要在
build.sh
中添加一个
read
,以避免出现这种情况。如果希望
bash
在执行某个命令后变为交互式,可以尝试使用bash的
--rcfile
选项执行一些命令,然后变为交互式