我使用的是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
答案 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\build
到bat
,然后从那里执行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
选项执行某些命令,然后再进行交互。