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スクリプトです。しかし、実行すると「No such file」というメッセージが表示されます。
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
エラー:「No such file or directory」(コロンの前に何も表示されない)が表示される場合、シバン行の末尾に改行があることを意味します。これは、おそらくWindowsで編集されたためです(CR、LF行区切り記号)。 CR文字を使用すると、シェルがメッセージの先頭を印刷した後にカーソルが行の先頭に戻るため、エラーメッセージの一部であるインタープリター文字列を終了するCRの後の部分のみが表示されます。
CRを削除します。Shebang行にはUnix 行末 (改行のみ)が必要です。 Python自体はCRLF行末を許可するので、他の行のCR文字は傷つきません。一方、シェルスクリプトにはCR文字が含まれていない必要があります。
Windowsの行末を削除するには、 dos2unix を使用できます。
Sudo dos2unix /usr/local/bin/casperjs
またはsed:
Sudo sed -i -e 's/\r$//' /usr/local/bin/casperjs
Windowsでスクリプトを編集する必要がある場合は、Unixの行末(メモ帳よりも脳死の少ないもの)に対応するエディターを使用し、Unixの行末(つまりLFのみ)を書き込むように構成してくださいUnixファイルの編集。
Visual Studio Codeを使用していますが、テキストエディターが初めてです。私は同じエラーを受け取り、この投稿の手順に従って手動で試しましたが、うまくいきませんでした。ただし、Visual Studio Codeの右下隅には、CRとLFをオンザフライで切り替えるオプションがあり、問題は解決しました。これが当てはまるかどうかはわかりませんが、テキストエディターでプログラミングしている場合は、切り替えるボタンを提供することで簡単な答えが得られる場合があります。