试图在Ubuntu 12.04上运行casperjs.在我运行后安装它我得到:
09:20 $ll /usr/local/bin/casperjs
lrwxrwxrwx 1 root root 26 Nov 6 16:49 /usr/local/bin/casperjs -> /opt/casperjs/bin/casperjs
09:20 $/usr/bin/env python --version
Python 2.7.3
09:20 $cat /opt/casperjs/bin/casperjs | head -4
#!/usr/bin/env python
import os
import sys
09:20 $casperjs
: No such file or directory
09: 22 $python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
[GCC 4.6.3] on linux2
所以Python存在并且可以运行,casperjs指向正确的位置,它是一个python脚本.但是当我运行它时,我得到“没有这样的文件”.
我可以通过更改casperjs python文件的第一行来修复它:
#!/usr/bin/env python
至:
#!/usr/bin/python
结果:
$casperjs --version
1.1.0-DEV
我设法修复它,但我想知道为什么它不适用于#!/usr/bin/env python,因为这似乎是一个普通的解释器行.我有错误的配置吗?
以下是获取casperjs的步骤:
$git clone git://github.com/n1k0/casperjs.git
$cd casperjs
$ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs
$casperjs
: No such file or directory
解决方法:
如果你看到错误“:没有这样的文件或目录”(冒号前面没有任何内容),这意味着你的shebang行最后有一个回车符,大概是因为它是在Windows下编辑的(它使用CR,LF作为行分隔符).在shell打印消息的开头之后,CR字符会使光标移回到行的开头,因此您只能在CR之后看到该部分,该部分结束了作为错误消息一部分的解释器字符串.
删除CR:shebang line需要有一个Unix line ending(仅限换行). Python本身允许CRLF行结尾,因此其他行上的CR字符不会受到伤害.另一方面,Shell脚本必须没有CR字符.
sudo dos2unix /usr/local/bin/casperjs
或者sed:
sudo sed -i -e 's/\r$//' /usr/local/bin/casperjs
如果您必须在Windows下编辑脚本,请使用编辑器来处理Unix行结尾(即比记事本更少脑死亡的东西),并确保在编辑Unix文件时将其配置为编写Unix行结尾(即仅LF).