Biar saya tebak, ada opsi set -e
(atau bentuk panjang set -o errexit
) di .bashrc
( .bash_profile
) Anda.
-e
Keluar segera jika pipa (yang mungkin terdiri dari satu perintah sederhana ),
perintah subkulit yang terlampir dalam tanda kurung, atau salah satu perintah yang dieksekusi sebagai bagian dari daftar perintah yang dilingkupi oleh kawat gigi (lihat
SHELL GRAMMAR di atas) keluar dengan non Status -zero. Shell tidak keluar jika perintah yang gagal adalah bagian dari daftar perintah segera setelah beberapa
saat atau sampai kata kunci, bagian dari pengujian mengikuti kata if atau elif yang dilindungi, bagian dari perintah apa pun yang dijalankan di && atau ||
daftar kecuali perintah mengikuti akhir
&& atau|| , perintah apa pun dalam pipa kecuali yang terakhir, atau jika nilai pengembalian perintah dibalik ! . Jebakan pada ERR , jika disetel, dieksekusi sebelum shell keluar. Opsi ini berlaku untuk lingkungan shell dan masing-masing lingkungan sub-kulit secara terpisah (lihat PERLUASAN LINGKUNGAN PERINTAH di atas), dan dapat menyebabkan subkulit keluar sebelum menjalankan semua perintah dalam subkulit.
- bash (1)
Opsi ini sangat berguna untuk beberapa skrip - memungkinkan untuk menghindari banyak || exit 1
, misalnya alih-alih
cd /var/ || exit 1
tar -cvf myarchive.tar "$SOMEDIR" || exit 1
rm -r "$SOMEDIR"
kamu bisa menulis
set -e
cd /var/
tar -cvf myarchive.tar "$SOMEDIR"
rm -r "$SOMEDIR"
Tapi tentu saja tidak ada alasan untuk mengaturnya untuk sesi bash interaktif.