Apa arti dari nilai pengembalian 127 dari $? dalam UNIX.
291
Nilai 127 dikembalikan oleh /bin/sh
ketika perintah yang diberikan tidak ditemukan dalam PATH
variabel sistem Anda dan itu bukan perintah built-in shell. Dengan kata lain, sistem tidak memahami perintah Anda, karena tidak tahu di mana menemukan biner yang Anda coba panggil.
which [program]
untuk melihat biner OS mana yang digunakan. Jika muncul kosong, langkah selanjutnya adalah memeriksa bit eksekusi dan PATH.which
tidak terlalu akurat - ia tidak tahu tentang alias, fungsi shell, memoisasi pencarian PATH, atau faktor internal lainnya ke keadaan shell. Jauh lebih baik untuk digunakantype
, shell builtin yang mengetahui semua hal itu.126
(Permission denied
), tidak127
ketika saya mencoba untuk memanggil file yang tidak dapat dieksekusi (terlepas dari isinya); sama halnya, upaya untuk mengeksekusi direktori juga menghasilkan126
(is a directory
).Secara umum itu berarti:
127 - perintah tidak ditemukan
tetapi juga bisa berarti bahwa perintah itu ditemukan ,
tetapi perpustakaan yang diperlukan oleh perintah TIDAK ditemukan .
sumber
127 - command not found
contoh: $ caat Pesan kesalahan akan
pesta:
sekarang Anda periksa menggunakan
echo $?
sumber
Sebuah konvensi shell adalah bahwa executable yang sukses harus keluar dengan nilai 0. Hal lain dapat diartikan sebagai kegagalan semacam, pada bagian dari bash atau executable Anda yang baru saja berlari. Lihat juga $ PIPESTATUS dan bagian EXIT STATUS di halaman bash man:
sumber
Tidak memiliki arti khusus, selain itu proses terakhir untuk keluar melakukannya dengan status keluar 127.
Namun, ini juga digunakan oleh bash (dengan asumsi Anda menggunakan bash sebagai shell) untuk memberi tahu Anda bahwa perintah yang Anda coba jalankan tidak dapat dieksekusi (yaitu tidak dapat ditemukan). Sayangnya itu tidak dapat langsung dikurangkan, jika proses keluar dengan status 127, atau jika tidak dapat ditemukan.
EDIT:
Tidak dapat langsung dikurangkan, kecuali untuk output di konsol, tapi ini stack overflow, jadi saya menganggap Anda melakukan ini dalam sebuah skrip.
sumber
Kesalahan ini terkadang menipu. Dikatakan file tidak ditemukan meskipun file tersebut memang ada. Bisa jadi karena karakter khusus yang tidak dapat dibaca yang ada dalam file yang dapat disebabkan oleh editor yang Anda gunakan. Tautan ini mungkin membantu Anda dalam kasus-kasus seperti itu.
-bash: ./my_script: / bin / bash ^ M: interpreter buruk: Tidak ada file atau direktori
Cara terbaik untuk mengetahui apakah ini masalah adalah dengan menempatkan pernyataan gema di seluruh file dan memverifikasi apakah ada kesalahan yang sama.
sumber
Jika Anda mencoba menjalankan program menggunakan bahasa scripting, Anda mungkin perlu menyertakan path lengkap bahasa scripting dan file yang akan dieksekusi. Sebagai contoh:
sumber
Jika mainframe IBM JCL memiliki beberapa karakter atau angka tambahan di akhir nama skrip unix yang dipanggil, maka ia dapat melempar kesalahan tersebut.
sumber