Что задает переменную окружения $ SHELL?

Где переменная среды $SHELL сначала установлена ​​в системе UNIX?

Как я могу найти и распечатать все настройки этого типа по умолчанию для моего терминала?

Традиционно по логину (1) :

 ENVIRONMENT login sets the following environment variables: HOME The user's home directory, as specified by the password database. SHELL The user's shell, as specified by the password database. 

Хотя в наши дни это может быть оконный менеджер или терминальная программа, создающая эти настройки, в зависимости от вкуса unix и того, насколько они ушли от традиции. env покажет, что в настоящее время установлено в среде, оболочка или что-то еще, возможно, изменилось по умолчанию. Однако «настройки терминала» обычно не являются переменными среды, а оболочки, такие как bash или zsh имеют команду set , а в других местах они скрывают настройки …

Вы можете проверить значения по умолчанию вашей системы в /etc/default/useradd или с помощью sudo useradd -D , это выведет значение по умолчанию для $SHELL и других переменных.