Mencoba menjalankan casperjs di Ubuntu 12.04. Setelah menginstalnya ketika saya menjalankan saya mendapatkan:
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
Jadi Python hadir dan dapat dijalankan, casperjs menunjuk ke tempat yang tepat dan itu adalah skrip python. Tetapi ketika saya menjalankannya saya mendapatkan "Tidak ada file seperti itu".
Saya dapat memperbaikinya dengan mengubah baris pertama dari file python casperjs dari:
#!/usr/bin/env python
untuk:
#!/usr/bin/python
Hasil:
$ casperjs --version
1.1.0-DEV
Saya berhasil memperbaikinya, tetapi saya bertanya-tanya mengapa itu tidak berhasil #!/usr/bin/env python
, karena sepertinya itu adalah garis juru bahasa yang normal. Apakah saya salah mengonfigurasi?
Berikut langkah-langkah untuk mendapatkan 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
strace /usr/local/bin/casperjs
pada versi yang tidak bekerja? Akan sangat membantu jika kita dapat melihat file mana yang mencoba untuk dijalankan oleh env, dan apakah env gagal menemukan python atau python gagal membuka skrip.: No such file or directory
menjadi output yang berisi usaha yang dijalankan. [edit: hanya melihat jawaban Gilles. Periksa baris dalam output strace yang terlihatexecve("/usr/bin/python\r", ...)
. ]Jawaban:
Jika Anda melihat kesalahan ": Tidak ada file atau direktori" (tanpa apa pun sebelum titik dua), itu berarti garis shebang Anda memiliki carriage return di bagian akhir, mungkin karena itu diedit di Windows (yang menggunakan CR, LF sebagai pemisah baris). Karakter CR menyebabkan kursor bergerak kembali ke awal baris setelah shell mencetak awal pesan dan jadi Anda hanya bisa melihat bagian setelah CR yang mengakhiri string juru bahasa yang merupakan bagian dari pesan kesalahan.
Hapus CR: garis shebang perlu memiliki akhiran baris Unix (hanya linefeed). Python sendiri memungkinkan ujung garis CRLF, sehingga karakter CR di baris lain tidak sakit. Script shell di sisi lain harus bebas dari karakter CR.
Untuk menghapus ujung garis Windows, Anda dapat menggunakan dos2unix :
atau sed:
Jika Anda harus mengedit skrip di bawah Windows, gunakan editor yang berupaya dengan ujung garis Unix (yaitu sesuatu yang lebih sedikit mati otak daripada Notepad) dan pastikan bahwa itu dikonfigurasikan untuk menulis ujung garis Unix (yaitu hanya LF) saat mengedit file Unix.
sumber
^M
di akhir. Saya secara eksklusif di Ubuntu di sini tetapi masih gedit menempatkan ^ M di kadang-kadang, jadi saya pergi ke Geany. Pokoknya itu akan memberikan kesalahan yang berbeda dan itu bukan kesalahan yang saya lihat.^M
cara lain untuk mengatakan CR.#!/usr/bin/env python
(tanpa menambahkan kembali CR), itu akan berfungsi.\r
= Unicode U + 0D = ^ M (Ctrl + M), dan LF =\n
= Unicode U + A0 = ^ J (Ctrl + J)Saya menggunakan Visual Studio Code dan saya baru ke editor teks. Saya menerima kesalahan yang sama dan mencoba secara manual mengikuti langkah-langkah dalam posting ini, itu tidak berhasil untuk saya. Namun, dalam Visual Studio Code sudut kanan bawah memberikan opsi untuk beralih antara CR dan LF on the fly, masalah diselesaikan. Saya tidak yakin apakah ini berlaku tetapi jika Anda memprogram dalam editor teks mungkin memberikan jawaban sederhana dengan menyediakan tombol untuk beralih.
sumber