Ini terlihat seperti bug di beberapa shell, berfungsi seperti yang diharapkan dengan ksh93 dan zsh .
Latar Belakang:
Kebanyakan shell tampaknya menjalankan loop sementara di dalam shell utama dan
Bourne Shell menangguhkan seluruh shell jika Anda mengetikkan ^ Z dengan shell non-login
bash hanya menangguhkan sleep
dan kemudian meninggalkan loop sementara demi mencetak prompt shell baru
dash membuat perintah ini tidak dapat ditangguhkan
Dengan ksh93 , semuanya bekerja sangat berbeda:
ksh93 melakukan hal yang sama, ketika perintah dimulai pertama kali, tetapi seperti sleep
buitin di ksh93, ksh93 memiliki handler yang menyebabkan loop sementara untuk memotong shell utama dan kemudian menunda pada saat Anda mengetikkan ^ Z.
Jika Anda dalam tipe ksh93 nanti fg
, anak bercabang yang masih menjalankan loop dilanjutkan.
Anda melihat perbedaan utama ketika membandingkan pesan kontrol pekerjaan dari bash dan ksh93:
laporan bash :
[1]+ Stopped sleep 1
tapi ksh93 melaporkan:
^Z[1] + Stopped while true; do echo .; sleep 1; done
zsh berperilaku mirip dengan ksh93
Dengan kedua shell, Anda memiliki satu proses (shell utama) selama Anda tidak mengetikkan ^ Z, dan dua proses shell setelah Anda mengetikkan ^ Z.
$?
pada pengembalian, dantrue
tidak demikian halnyatrue
. mungkin. kupikir.