Что такое Shell?

Что такое Shell?

Командная оболочка, или просто Shell, это программа, которая создает среду для выполнения других программ и команд на компьютере. Она предоставляет удобный интерфейс для взаимодействия с операционной системой. Внутри себя командная оболочка содержит встроенные команды, арифметические операторы и другие синтаксические выражения, которые помогают управлять выполнением команд.

Одной из основных задач командной оболочки является облегчение запуска других программ. Она осуществляет поиск программ в текущем каталоге и в указанных в переменной среды PATH путях. Кроме того, она управляет сменой текущего каталога и переменными окружения, что помогает сделать ваши команды более гибкими и удобными в использовании.

Чтобы понять, имеете ли вы дело с командой оболочки или внешней программой, вы можете воспользоваться командой whereis. Например, команда cd — это встроенная команда оболочки, в то время как bg и fg — также встроенные команды, которые помогают управлять фоновыми и передними процессами в терминале.

whereis cd
Что такое Shell?

Действительно, команда ls — это внешняя программа, исполняемый файл которой располагается в файловой системе.

Командные оболочки представляют собой традиционный способ взаимодействия с Unix-подобными операционными системами. Они появились практически одновременно с появлением Unix и стали привычным интерфейсом взаимодействия с компьютером. Первой командной оболочкой была Thompson Shell, разработанная Кеном Томсоном в Bell Labs в 1971 году. Она уже поддерживала перенаправление ввода-вывода команд и простые условные операторы.

Циклы while появились чуть позже, в оболочке PWB Shell, созданной Джоном Машеу на основе Thompson Shell. Однако современный вид командная оболочка приобрела только с появлением оболочки Bourne Shell в 1979 году. В ней уже было автодополнение имен файлов и команд, стандартные переменные окружения и удобные управляющие структуры. Исполняемый файл этой оболочки имел путь в системе /bin/sh. В современных системах обычно это ссылка на используемую оболочку.

Оболочка Bash (Bourne Again Shell) была разработана Браеном Фоксом в рамках проекта GNU в 1989 году, и она с тех пор стала стандартной для многих дистрибутивов Linux. Однако с течением времени она устарела, и появились более современные командные оболочки, такие как ZSH и Fish, которые вдохновлены идеями Bash, но предлагают более продвинутые функции и удобства.

Оболочка Zsh появилась вскоре после Bash, в 1990 году. Она быстро завоевала популярность благодаря своему богатому функционалу. Например, Zsh предлагает автодополнение для команды cd, что означает, что при вводе этой команды выводится список папок, из которого можно выбрать нужную. Это существенно облегчает навигацию по файловой системе и делает работу в терминале более продуктивной.

Что такое Shell?

Поддерживается автодополнение для параметров команд, например, для git можно вывести доступные команды вместе со справкой:

Что такое Shell?

Оболочка Zsh имеет множество других преимуществ. Например, она поддерживает цветные темы для вывода приглашения, что делает работу в терминале более приятной и удобной. Кроме того, Zsh легко расширяется с помощью плагинов, позволяя настраивать её под свои нужды и предпочтения.

Ещё одной современной оболочкой является fish (Friendly Interactive Shell), появившаяся в 2005 году. Она поддерживает все стандартные возможности командной оболочки, но также предлагает удобную подсветку синтаксиса команд во время ввода и удобный поиск команд, наподобие Ctrl+R, но уже по умолчанию. Однако, самое привлекательное для начинающих пользователей в fish — это простота в написании скриптов.

Если вы не меняли командную оболочку, то скорее всего у вас используется Bash. Простейший способ проверить текущую оболочку — это посмотреть содержимое переменной окружения SHELL.

echo $SHELL
Что такое Shell?

Ещё один способ узнать текущую оболочку — воспользоваться командной ps. Если ей передать опцию -p и идентификатор процесса, то она покажет информацию о нём. Вывести идентификатор процесса текущей оболочки можно с помощью символов $$. Поэтому выполните:

ps -p $$
Что такое Shell?

В данном случае видно, что используется ZSH. Для того чтобы посмотреть все оболочки, установленные в вашей системе, просто выведите содержимое файла /etc/shells:

cat /etc/shells
Что такое Shell?

Все эти оболочки можно использовать выполнения команд от пользователей. Оболочка настраивается в файле /etc/passwd, для каждого пользователя отдельно. Поэтому посмотреть какая оболочка настроена для того или иного пользователя можно в этом файле. Например, для текущего пользователя команда будет выглядеть так:

grep "^$USER" /etc/passwd | awk -F: '{ print $7}'
Что такое Shell?

В этой статье мы рассмотрели, что такое командная оболочка (Shell), и как они развивались со времен своего появления до наших дней. Мы видели, что командные оболочки являются удобным инструментом для взаимодействия с операционной системой и обладают множеством функций, которые делают работу в терминале эффективной и гибкой. Даже с появлением графических интерфейсов командные оболочки остаются незаменимыми для многих задач и предпочтительными инструментами для опытных пользователей.

А по этой ссылке вы получите бонус к пополнению баланса у самого надежного и дешевого хоста

11
Начать дискуссию