GNU/Linux >> Belajar Linux >  >> Linux

Skrip SH di $PATH tidak ditemukan di Linux Alpine 3.11

Shell interaktif Anda adalah dash (menyamar sebagai sh ). dash kata shell

sh: /usr/local/bin/wait-for: not found

ketika mencoba menjalankan skrip yang memiliki #! yang salah -line menunjuk ke juru bahasa yang tidak dapat ditemukan. Itu terjadi menjadi kesalahan yang persis sama dengan yang akan Anda dapatkan ketika perintah yang Anda ketikkan tidak dapat ditemukan, jadi mudah untuk berpikir bahwa itu adalah $PATH masalah (tidak dalam kasus ini). Kerang Oher memiliki pesan kesalahan yang lebih informatif (bash dan zsh mengatakan "penerjemah buruk:Tidak ada file atau direktori seperti itu" dan juga memberi tahu Anda juru bahasa apa yang coba dijalankan).

Karena file tersebut adalah file teks DOS, #! -line menginstruksikan shell untuk menjalankan skrip dengan /bin/sh\r , di mana \r adalah representasi umum dari karakter carriage return, yang merupakan bagian dari terminasi baris dalam file teks DOS. Pada sistem Unix, carriage return adalah "karakter biasa" dan sama sekali bukan bagian dari terminasi baris, yang berarti ia mencoba memulai /bin/sh\r untuk menjalankan skrip Anda, dan kemudian gagal karena file tersebut tidak ada. Oleh karena itu, ini adalah penerjemah yang "tidak ditemukan", bukan skrip itu sendiri.

Menjalankan skrip dengan eksplisit penerjemah melewati #! -line, selalu, itulah sebabnya Anda tidak mendapatkan kesalahan saat melakukannya. Namun, setiap baris dalam skrip akan tetap memiliki carriage return di akhir baris, yang dapat menyebabkan skrip gagal berfungsi dalam kondisi tertentu.

Cukup simpan ulang file sebagai file teks Unix, atau konversikan dengan dos2unix , akan menyelesaikan masalah Anda.


Linux
  1. dos2unix:perintah tidak ditemukan

  2. chmod:perintah tidak ditemukan

  3. mkfs:perintah tidak ditemukan

  1. file:perintah tidak ditemukan

  2. tune2fs:perintah tidak ditemukan

  3. fsck:perintah tidak ditemukan

  1. ekor:perintah tidak ditemukan

  2. nohup:perintah tidak ditemukan

  3. Biner Go yang diinstal tidak ditemukan di jalur di Alpine Linux Docker