Saya ingin menjalankan skrip shell:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Saya mencoba melakukan prosedur standar, tetapi saya mendapatkan kesalahan ini:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
Apa artinya? Saya melakukan ini sebagai root
pengguna di bawah root
grup.
Apakah ini berarti file tersebut tidak memiliki izin yang benar untuk root
pengguna?
sumber
dos2unix
program.\n
karena itu Unix. Script itu mungkin dari versi Mac OS sebelumnya? Anda bisa larised -i -e 's/\r$/\n/' script.sh
dalam kasus itu.Dalam vim Anda juga bisa menggunakan
:set ff=unix
dan kemudian menyimpan file, atau:set ff=dos
untuk mendapatkan format DOS lagi.sumber
File Anda memiliki ujung garis gaya DOS / Windows (CR LF) , tetapi pada sistem seperti Unix hanya karakter kontrol LF yang digunakan sebagai pemecah baris.
Karakter kontrol CR tambahan ditampilkan disandikan seperti
^M
dalam output Anda. Anda juga dapat melihatnya saat Anda menjalankancat -A create_mgw_3shelf_6xIPNI1P.sh
.Untuk mengubah ujung garis dari gaya DOS / Windows ke gaya Unix, ada alat yang disebut
dos2unix
. Anda menginstalnya menggunakan:Kemudian Anda cukup mengonversi akhiran baris file dengan kedua cara menggunakan
Dalam kasus Anda, jalankan perintah ini di bawah dan file skrip akan dikonversi di tempat:
Setelah itu Bash harus dapat menafsirkan file dengan benar.
sumber
Masalahnya Anda edit dengan Dos!
buka file Anda dengan vi lalu setel unix dengan:
dan semuanya baik-baik saja
sumber
Lakukan
vi <your script>
.lalu
:set list
; itu akan menampilkan salah satu karakter khusus dalam skrip Anda.lalu ganti karakter:
:%s/^M//gc
[untuk mengetik,^M
tekan Ctrl+ v+ m]sumber
Seperti yang dijelaskan dalam jawaban lain, ini adalah masalah format. Jadi, jawabannya adalah mengubah format dari akhir baris gaya DOS ke Unix. Ini adalah cara sederhana lain untuk memperbaiki file Anda 'di tempat'
Ini tersedia dalam paket
tofrodos
:sumber
Anda juga dapat menggunakan gedit untuk menghapus karakter yang tidak diinginkan. Di bawah menu File, pilih Save As dan atur tipe end line unix / Linux.
sumber