exitKendimi terminalden çıkmamak için yerleşikin işlevselliğini değiştiren bir işlev yazmaya çalışıyorum .
SHLVLOrtam 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 exitolsa 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_SUBSHELLcevap (tartışmalı olsa bile) bu soru için geçerli olmaz.