使用./在cygwin中运行bash脚本

时间:2014-05-06 22:37:41

标签: bash cygwin

我有一个简单的bash脚本,当我调用它时,会在Cygwin xterm终端的Windows机器上抛出错误:./myscript.bat。当我这样称它时,它运行正常:/cygdrive/c/cygwin/bin/bash.exe myscript.bat。我想我的shell默认不使用bash。如何将其设置为bash,以便下次打开shell时,我可以使用./myscript.bat执行我的脚本?

2 个答案:

答案 0 :(得分:1)

您可能需要更改文件的权限才能使其成为可执行文件。

尝试

chmod +x myscript.bat
./myscript.bat

答案 1 :(得分:1)

当您执行文件时,Windows(或Windows中的某些组件)根据文件名的扩展名部分决定如何执行它。

Cygwin继承了此功能,允许您从Cygwin中运行Windows命令。 Cygwin还实现了大多数常用的UNIX功能(根据内容运行命令),但UNIX和Windows语义的结合并不总是完全干净。

.bat后缀是指Windows批处理文件,因此当您尝试执行myscript.bat时,系统会将其视为一种方式而不是bash脚本。

将文件名从myscript.bat更改为myscript.bashmyscript.sh - 或者只是完全删除扩展名(因为运行脚本的人不需要关心它是如何编写的)。

您应该避免使用其他几种文件扩展名(例如.cmd),具体取决于Windows的配置方式。一些快速实验表明,.sh扩展名是安全的,但实际上您根本不需要使用扩展名来构建shell脚本。

而且,正如R Sahu's answer所说,如果您还没有这样做,还需要确保脚本具有执行权限:

mv myscript.bat myscript
chmod +x myscript