Saya hanya ingin menjalankan eksekusi dari baris perintah ./arm-mingw32ce-g++
, tetapi kemudian saya mendapatkan pesan kesalahan,
bash: ./arm-mingw32ce-g++: No such file or directory
Saya menjalankan Ubuntu Linux 10.10. ls -l
daftar
-rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++
Menggunakan sudo ( sudo ./arm-mingw32ce-g++
) memberi
sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory
Saya tidak tahu mengapa OS bahkan tidak dapat melihat file ketika ada di sana. Ada pemikiran?
sumber
not a dynamic executable
(sebelum saya menginstal ia32-libs).ia32-libs-*
sudah usang di Ubuntu 16.04, installib32ncurses5
danlib32z1
sebagai gantinya.Saya menghadapi kesalahan ini ketika saya mencoba membangun sumber Selenium di Ubuntu. Skrip shell sederhana dengan shebang yang benar tidak dapat dijalankan bahkan setelah saya memenuhi semua prasyarat.
file file-name # helped me in understanding that CRLF ending were present in the file.
Saya membuka file di Vim dan saya dapat melihat bahwa hanya karena saya pernah mengedit file ini di mesin Windows, itu dalam format DOS. Saya mengonversi file ke format Unix dengan perintah di bawah ini:
dos2unix filename # actually helped me and things were fine.
Saya harap kita harus berhati-hati setiap kali kita mengedit file di seluruh platform, kita juga harus menjaga format file.
sumber
Kesalahan ini juga dapat terjadi jika mencoba menjalankan skrip dan shebang salah eja. Pastikan membaca
#!/bin/sh
,#!/bin/bash
, atau mana interpreter yang Anda gunakan.sumber
./my/full/path/myscript
bukan./myscript
.Saya mendapat pesan kesalahan yang sama ketika mencoba menjalankan skrip Python - ini bukan kasus penggunaan yang dimaksudkan @ Warpspace (lihat komentar lain), tetapi ini adalah salah satu hit teratas untuk pencarian saya, jadi mungkin seseorang akan menganggapnya berguna.
Dalam kasus saya itu adalah akhir baris DOS (
\r\n
bukan\n
) bahwa garis shebang (#!/usr/bin/env python
) akan tersandung. A sederhanados2unix myfile.py
memperbaikinya.sumber
Saya mendapat kesalahan yang sama untuk skrip bash sederhana yang tidak akan memiliki masalah 32/64-bit. Ini mungkin karena skrip yang Anda coba jalankan memiliki kesalahan di dalamnya. Posting forum ubuntu ini menunjukkan bahwa dengan file skrip normal Anda dapat menambahkan 'sh' di depan dan Anda mungkin mendapatkan beberapa keluaran debug darinya. misalnya
dan lihat apakah Anda mendapatkan hasil.
Dalam kasus saya, masalah sebenarnya adalah file yang saya coba jalankan dalam format Windows daripada linux.
sumber
Saya mendapat kesalahan ini
“No such file or directory”
tetapi itu ada karena file saya dibuat di Windows dan saya mencoba menjalankannya di Ubuntu dan file tersebut berisi 15 \ r yang tidak valid di mana pun ada baris baru di sana. Saya baru saja membuat file baru yang memotong hal-hal yang tidak diinginkansleep: invalid time interval ‘15\r’ Try 'sleep --help' for more information. script.sh: 5: script.sh: /opt/ag/cont: not found script.sh: 6: script.sh: /opt/ag/cont: not found root@Ubuntu14:/home/abc12/Desktop# vi script.sh root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 0000000 # ! / u s r / b i n / e n v b 0000020 a s h \r \n w g e t h t t p : / 0000400 : 4 1 2 0 / \r \n 0000410 root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 0000000 # ! / u s r / b i n / e n v b 0000020 a s h \n w g e t h t t p : / / 0000400 / \n 0000402 root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed
sumber
Perintah di bawah ini bekerja pada 16.4 Ubuntu
Masalah ini muncul ketika file .sh Anda rusak atau tidak diformat sesuai protokol unix.
dos2unix mengubah file .sh menjadi format Unix!
sumber
Saya memiliki masalah yang sama dengan file yang saya buat di mac saya. Jika saya mencoba menjalankannya di shell dengan ./filename, saya mendapat pesan kesalahan file tidak ditemukan. Saya pikir ada yang salah dengan file tersebut.
apa yang telah kulakukan:
buka sesi ssh ke server
cat nama file
salin output ke clipboard
rm nama file
sentuh nama file
vi nama file
i untuk mode
sisipkan konten dari clipboard
ESC untuk mengakhiri mode penyisipan
: wq!
Ini berhasil untuk saya.
sumber
Saya baru saja mengalami masalah ini
mingw32 bash
. Saya telah mengeksekusi node / npm dariProgram Files (x86)\nodejs
dan kemudian memindahkannya kedisabled
direktori (pada dasarnya menghapusnya dari jalur). Saya juga memilikiProgram Files\nodejs
(mis. Versi 64bit) di jalur, tetapi hanya setelah versi x86. Setelah bash shell dimulai ulang, versi 64bit dari npm dapat ditemukan.node
bekerja dengan benar sepanjang waktu (diperiksa dengannode -v
yang berubah ketika versi x86 dipindahkan).Saya pikir
bash -r
akan berhasil daripada memulai ulang bash: https://unix.stackexchange.com/a/5610sumber
Seperti yang disebutkan oleh orang lain, ini karena loader tidak dapat ditemukan, bukan file yang dapat dieksekusi. Sayangnya pesan tersebut kurang jelas.
Anda dapat memperbaikinya dengan mengubah pemuat yang digunakan dapat dieksekusi, lihat jawaban lengkap saya di pertanyaan lain ini: Beberapa pustaka glibc pada satu host
Pada dasarnya Anda harus menemukan loader mana yang coba digunakan:
Kemudian temukan jalur yang benar untuk loader yang setara, dan ubah executable Anda untuk menggunakan loader dari jalur yang sebenarnya:
Anda mungkin perlu mengatur jalur penyertaan juga, Anda akan tahu apakah Anda menginginkannya atau tidak setelah Anda mencoba menjalankannya. Lihat semua detail di utas lainnya itu.
sumber
Saya menemukan solusi saya untuk Ubuntu 18 saya di sini .
Kemudian:
sumber
Saya mengalami masalah ini dan alasannya adalah EOL di beberapa editor seperti Notepad ++. Anda bisa mengeceknya di menu Edit / konversi EOL. Unix (LF) harus dipilih. Semoga bermanfaat.
sumber
Ditambahkan di sini untuk referensi di masa mendatang (untuk pengguna yang mungkin termasuk dalam kasus yang sama): Kesalahan ini terjadi saat bekerja di Windows (yang memperkenalkan karakter tambahan karena pemisah baris yang berbeda dari sistem Linux) dan mencoba menjalankan skrip ini (dengan karakter tambahan dimasukkan) di Linux. Pesan kesalahan menyesatkan.
Di Windows, pemisah garis adalah CRLF ( \ r \ n ) sedangkan di linux adalah LF ( \ n ). Ini biasanya dapat dipilih di editor teks.
Dalam kasus saya, ini terjadi karena bekerja pada Windows dan mengunggah ke server Unix untuk dieksekusi.
sumber
scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
saat itucd $scriptdir || exit 1
tetapi\r
file yang diedit di windows saya ditambahkan kescriptdir
nilainya. Jadi pesannya: no such file or directory
paling membingungkan, karena akhirnya menghapus apa yang dikeluhkannya.