/ bin / sh:从bash脚本运行Cordova时的错误解释器

时间:2015-02-26 17:43:59

标签: bash cordova command-line

我正在编写一个shell脚本来动态创建一个cordova项目。它被称为build_android_app.sh,它只是:

function create_project(){
    cordova create testproject com.test testproject
}

echo "2/ Create Project"
create_project

在命令提示符下,当我运行时:

cordova create testproject com.test testproject

一切正常,项目已创建。那么我尝试通过执行:

来运行脚本
bash build_android_app.sh 

但我收到错误:

 /c/Users/teamcity/AppData/Roaming/npm/cordova: /bin/sh: bad interpreter: No such file or directory

我以“teamcity”用户身份登录,而cordova位于/c/Users/teamcity/AppData/Roaming/npm/cordova的路径

cordova文件的顶部以:

开头
#!/bin/sh

我花了很多时间试图让它工作,包括用绝对的cordova路径替换脚本中的cordova。但我仍然得到同样的错误。有什么想法吗?

编辑:

/c/Users/teamcity/AppData/Roaming/npm/我跑了:

cat -vet cordova

第一行打印为:

#!/bin/sh$

所以最后还有一个额外的$标志。通过bash脚本运行此cordova文件的解决方案是什么?

EDIT 实际上,在我的本地Windows机器上,羊脚本工作正常。即使我在运行#!/bin/sh$时也看到了cat -vet cordova

问题出在我正在远程登录的Windows服务器上......

2 个答案:

答案 0 :(得分:0)

错误消息说:

  

/ bin / sh:错误的解释器:没有这样的文件或目录

/bin/sh是否存在?

脚本:

#!/bin/foo-bar

echo hello

运行:

# ./foo 
-bash: ./foo: /bin/foo-bar: bad interpreter: No such file or directory

答案 1 :(得分:0)

正如其他人所说,'听起来像'嵌入式控制代码 - 没有'未经编辑的'要审查的完整版脚本(即复制/粘贴到网络上很可能会删除有问题的代码,如果存在的话......)这有点难以解决。要尝试的事情:

1)bash -n cordova#任何错误?

2)zsh | ksh -n cordova#尝试另一个shell - 有任何错误吗?

3)od -c cordova |更多#查找' \ n \ r'或者其他逃脱的'连击; '正常线条'应以' \ n'结尾

4)' cordova'调用任何其他外部脚本?在那些尝试相同的东西..

5)如Igor所述,确认' / bin / sh'存在,即

   ls -l /bin/sh ## is it there?
6)疯狂的远射(也许你的终端没有显示'一切' ...)

cat cordova | tr -d '\r' > cordova.test
./cordova.test 

7)替换' / bin / sh'用' / bin / bash&#39 ;? ##可能不是一个好主意,因为可能有' sh'和' bash'脚本中项目的差异......

8)注意She-bang行(#!/ bin / sh |#/ bin / bash |#!/ bin / some_other_tool)必须是脚本的第一行(第1行),如第一行所示

:)
戴尔