Saya mencoba menulis fungsi untuk menggantikan fungsi exit
builtin untuk mencegah saya keluar dari terminal.
Saya telah mencoba menggunakan SHLVL
variabel lingkungan tetapi tampaknya tidak berubah di dalam subkulit:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Fungsi saya adalah sebagai berikut:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Ini tidak memungkinkan saya untuk menggunakan exit
dalam subkulit:
$ exit
Nice try!
$ (exit)
Nice try!
Apa metode yang baik untuk mendeteksi apakah saya dalam subkulit atau tidak?
(...)
mewarisi semua properti dari proses induk. Jawaban yang diberikan adalah solusi yang lebih kuat untuk menentukan level shell Anda.
BASH_SUBSHELL
jawabannya (walaupun kontroversial) tidak berlaku untuk pertanyaan itu.