Bu, birkaç kabukta bir hata gibi görünüyor, ksh93 ve zsh ile beklendiği gibi çalışıyor .
Arka fon:
Çoğu mermi, ana kabuğun içindeki while döngüsünü çalıştırıyor gibi görünüyor ve
Bourne Shell , oturum açma dışı bir kabukla ^ Z yazarsanız tüm kabuğu askıya alır
bash yalnızca askıya alır sleep
ve sonra while döngüsünü yeni bir kabuk istemi yazdırmak lehine bırakır
dash bu komutu vazgeçilmez kılar
Ksh93 ile işler çok farklı çalışır:
Komut ilk kez başlatılırken ksh93 de aynısını yapar, ancak sleep
ksh93'teki bir buitin gibi ksh93 de while döngüsünün ana kabuktan ayrılmasına ve ^ Z yazdığınızda askıya almasına neden olan bir işleyiciye sahiptir.
Daha sonra ksh93 yazıyorsanız fg
, döngüyü hala çalıştıran çatallı çocuk devam eder.
Bash ve ksh93'ten jobcontrol mesajlarını karşılaştırırken ana farkı görüyorsunuz:
bash raporları:
[1]+ Stopped sleep 1
ancak ksh93 raporları:
^Z[1] + Stopped while true; do echo .; sleep 1; done
zsh benzer davranır ksh93
Her iki kabukta, ^ Z yazmadığınız sürece tek bir işleminiz (ana kabuk) ve ^ Z yazdıktan sonra iki kabuk işleminiz olur.
$?
ve öyletrue
değiltrue
. muhtemelen. bence.