3

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

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

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

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

它应该自动发生。我坐可以这样做。

问候, 哈什特

4

1 回答 1

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 将在脚本完成后终止,甚至可能关闭窗口。您可能必须添加一个readintobuild.sh以避免这种情况。如果你想bash在执行某些命令后变成交互式,可以尝试使用--rcfilebash 的选项执行某些命令,然后变成交互式。

于 2012-08-09T15:33:14.203 回答