Да, когда вы открываете окно терминала, вы запускаете оболочку.
Имя программы оболочки хранится в переменной $SHELL
. Выполнение просто «$SHELL
» в командной строке использует значение в этой переменной, а затем интерпретирует его как команду, которая запускает новую оболочку. Когда вы выходите из этой оболочки, вы возвращаетесь к той оболочке, где она остановилась.
Вроде как, когда вы работаете над чем-то за своим столом, и ваш босс бросает на вас какую-то новую работу, так что вы приостанавливаете исходную работу, пока выполняете эту новую вещь, а затем можете взять то, что остановили. как только вы закончите с новым заданием. : -)
Эта новая оболочка не является оболочкой входа в систему, поэтому она использует приглашение по умолчанию вместо приглашения, указанного в файле конфигурации входа в оболочку.
$SHELL
полезно, когда вам нужно запустить команду из другой программы. Например, если вы находитесь в текстовом редакторе и хотите интерполировать выходные данные команды оболочки, редактор знает, какую программу оболочки следует запустить с помощью переменной окружения $SHELL
.
Роб Кеннеди комментирует переменную $SHLVL
. Это указывает на то, насколько «глубоко» вы находитесь в оболочках. Например, когда вы входите в систему, «echo $SHLVL
» печатает 1. Если вы открываете новую оболочку, та же команда печатает 2. После того, как вы выйдете из этой подоболочки и вернетесь в оболочку входа в систему, команда снова напечатает 1. Это нечто большее, чем вы просили, и его использование более эзотерическое, но это довольно интересно.