Bash
Если вы ввели правильную комбинацию имя пользователя/пароль, login выберет из файла /etc/passwd шелл, который нужно для вас загрузить. Для Linux систем в большинстве случаев это будет bash. Работа bash заключается в том, чтобы читать ваши команды и следить за тем, чтобы они были выполнены. Он является и интерфейсом пользователя и интерпретатором командного языка.
Как интерфейс пользователя он читает ваши команды и выполняет их сам (если это "внутренние" команды типа cd) или находит и выполняет программу (т.е. "внешнюю" команду типа cp или startx). Он также проделывает такие приятные вещи как сохранение истории команд и автоматическое завершение имени файла.
Мы уже наблюдали работу bash в качестве интерпретатора языка программирования. Скрипты, запускаемые программой init при старте системы являются обычно сценариями оболочки и выполняются при помощи bash. Сочетание удобного языка программирования с обычными системными утилитами, доступными из командной строки, представляет очень мощную комбинацию в случае, если вы знаете что делаете. Например (включен режим самодовольства) мне необходимо применить большой набор патчей к директории содержащей некоторые исходные тексты. Я могу сделать это, набрав единственную команду:
for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;
Будут найдены все файлы в моей домашней директории, чьи имена начинаются на sh-utils-1.16 и заканчиваются на .patch. Далее в цикле переменной f будут присваиваться имена этих файлов и выполняться команды заключенные между операторами do и done. В данном случае присутствовало всего 11 файлов-патчей, но это было-бы также просто будь их хоть 3000.