Saya mencoba menulis fungsi untuk menggantikan fungsi exitbuiltin untuk mencegah saya keluar dari terminal.
Saya telah mencoba menggunakan SHLVLvariabel 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 exitdalam 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_SUBSHELLjawabannya (walaupun kontroversial) tidak berlaku untuk pertanyaan itu.