exit
Kendimi terminalden çıkmamak için yerleşikin işlevselliğini değiştiren bir işlev yazmaya çalışıyorum .
SHLVL
Ortam değişkenini kullanmaya çalıştım, ancak alt kabuklarda değişmiyor gibi görünüyor:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Benim işlevim aşağıdaki gibidir:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Bu exit
olsa da alt kabuklarda kullanmama izin vermiyor :
$ exit
Nice try!
$ (exit)
Nice try!
Bir deniz kabuğu altında olup olmadığımı tespit etmek için iyi bir yöntem nedir?
(...)
çıkarılan alt kabuklar , ana sürecin tüm özelliklerini miras alır. Verilen cevaplar, kabuk seviyenizi belirlemek için daha sağlam çözümlerdir.
BASH_SUBSHELL
cevap (tartışmalı olsa bile) bu soru için geçerli olmaz.