Tôi đang cố gắng viết một hàm để thay thế chức năng của exit
nội trang để ngăn bản thân thoát khỏi thiết bị đầu cuối.
Tôi đã cố gắng sử dụng SHLVL
biến môi trường nhưng dường như nó không thay đổi trong các khung con:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Chức năng của tôi như sau:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Điều này sẽ không cho phép tôi sử dụng exit
trong các subshells mặc dù:
$ exit
Nice try!
$ (exit)
Nice try!
Một phương pháp tốt để phát hiện xem tôi có ở trong một mạng con hay không?
(...)
kế thừa tất cả các thuộc tính của quá trình cha. Các câu trả lời được cung cấp là các giải pháp mạnh mẽ hơn để xác định mức độ vỏ của bạn.
BASH_SUBSHELL
câu trả lời (ngay cả khi gây tranh cãi) sẽ không áp dụng cho câu hỏi đó.