при просмотре скрытых файлов моего домашнего каталога, я нашел .bash_logout. Я прошел через это содержимое в файле
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
Я не очень хорошо разбираюсь в BASH & amp; Я прошу этого, может кто-нибудь объяснить это мне. Что такое сделка с SHLVL?
Спасибо.
Из быстрого google кажется, что SHLVL приравнивается к «SHELL LeVeL» и отражает, насколько вы глубоко вложенные оболочки. То есть одна оболочка открывает другой, который открывает другой и т. д.
Это значение увеличивается для каждой открытой оболочки, поэтому код проверяет, является ли это верхним уровнем гнезда, то есть уровнем 1 .
, если это так, тогда (если / usr / bin / clear_console существует и является исполняемым) запустите код, чтобы очистить экран.
Взято отсюда: http: // linux.about.com/cs/linux101/g/shlvl.htm
Если вы просто хотите знать, почему прокрутка вниз.
Из man bash
SHLVL Incremented by one each time an instance of bash is started.
Но это не на 100% понятно ... Итак, давайте посмотрим:
# echo $SHLVL
1
# ps faux
...
user 4440 0.0 0.9 599220 18796 ? Sl 08:35 0:00 gnome-terminal
user 4447 0.0 0.2 31912 5304 pts/2 Ss+ 08:35 0:00 \_ bash
...
#
# screen
# echo $SHLVL
2
# ps faux
...
user 4440 0.0 0.9 599220 18796 ? Sl 08:35 0:00 gnome-terminal
user 4447 0.0 0.2 31920 5324 pts/2 Ss 08:35 0:00 \_ bash
user 4772 0.0 0.0 34656 1224 pts/2 S+ 08:43 0:00 \_ screen
user 4773 0.0 0.0 34816 1396 ? Ss 08:43 0:00 \_ SCREEN
user 4774 0.3 0.2 31952 5188 pts/3 Ss+ 08:43 0:00 \_ /bin/bash
...
#
# bash
# echo $SHLVL
3
# ps faux
user 4440 0.0 0.9 599220 18796 ? Sl 08:35 0:00 gnome-terminal
user 4447 0.0 0.2 31920 5324 pts/2 Ss 08:35 0:00 \_ bash
user 4772 0.0 0.0 34656 1224 pts/2 S+ 08:43 0:00 \_ screen
user 4773 0.0 0.0 34816 1396 ? Ss 08:43 0:00 \_ SCREEN
user 4774 0.1 0.2 31952 5348 pts/3 Ss 08:43 0:00 \_ /bin/bash
user 4832 1.3 0.2 31952 5184 pts/3 S+ 08:45 0:00 \_ bash
Таким образом, переменная увеличивается каждый раз, когда bash вложен в другой bash. И ваша часть кода влияет на то, что при выходе последнего экрана экран будет очищен. Но это не было выполнено на графических сеансах терминала, только в виртуальных терминалах (например, когда вы нажимаете ctrl + alt + f1) и работаете там.
Причина, по которой следующий человек, который работает на этом виртуальном терминале не может видеть результат последнего экрана, который у вас был. Потому что, возможно, на экране есть важная информация.