我有一个简单的bash脚本,当我调用它时,会在Cygwin xterm终端的Windows机器上抛出错误:./myscript.bat
。当我这样称它时,它运行正常:/cygdrive/c/cygwin/bin/bash.exe myscript.bat
。我想我的shell默认不使用bash。如何将其设置为bash,以便下次打开shell时,我可以使用./myscript.bat
执行我的脚本?
答案 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.bash
或myscript.sh
- 或者只是完全删除扩展名(因为运行脚本的人不需要关心它是如何编写的)。
您应该避免使用其他几种文件扩展名(例如.cmd
),具体取决于Windows的配置方式。一些快速实验表明,.sh
扩展名是安全的,但实际上您根本不需要使用扩展名来构建shell脚本。
而且,正如R Sahu's answer所说,如果您还没有这样做,还需要确保脚本具有执行权限:
mv myscript.bat myscript
chmod +x myscript