Как узнать оболочку линукса

Что такое командная оболочка (shell) в Linux?

Обновл. 27 Июл 2021 |

В этой статье мы разберемся, что такое shell и зачем это нужно, а также рассмотрим наиболее часто используемые командные оболочки в Linux и Unix.

Что такое shell?

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

Операционная система (ОС) запускает командную оболочку для каждого пользователя, когда тот входит в систему или открывает окно терминала. Первым что пользователь увидит в окне терминала, будет приглашение оболочки — оно, как правило, состоит из имени пользователя и имени хоста, отделенные друг от друга символом @ , следом за ними идет путь текущей рабочей директории и один из двух символов: $ или # .

Если пользователь не наделен особыми правами, то в качестве приглашения к вводу команд в терминале будет отображаться символ $ . Если же был выполнен вход под учетной записью привилегированного (root) пользователя, то в терминале вы увидите символ # :

Окно терминала обычного пользователя (виден символ $)

Окно терминала привилегированного (root) пользователя (виден символ #)

Примечание: Знак тильды (

) указывает на то, что мы находимся в домашнем каталоге текущего пользователя.

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

Ниже представлен пример выполнения простой команды date , возвращающей текущую дату и время:

Внутренние и внешние команды оболочки

Вводимые пользователем команды делятся на два типа:

Внутренние — это команды, изначально встроенные в оболочку.

Внешние — это команды, которые не встроены в оболочку. По своей сути они являются скорее небольшими отдельными программами, расположенными где-то в файловой системе (обычно, в каталогах /bin или /usr/bin).

Чтобы определить тип команды, достаточно в окне терминала ввести type :

Как вы можете видеть, команды dirs , pwd , cd и true — являются внутренними командами оболочки bash. А вот команды uname , id и whereis — являются внешними, т.к. они ссылаются на соответствующие файлы в каталоге /usr/bin.

Ознакомиться с полным списком внутренних команд оболочки можно при помощи команды help :

Читайте также:  Group policy management console windows 2016

Как узнать какая оболочка у меня установлена?

Если вы только начинаете свое знакомство с Linux и не меняли оболочку, то наиболее вероятно, что в вашей системе используется bash. Самый простой способ узнать, какая оболочка используется в данный момент — это обратиться к переменной окружения SHELL :

Кроме того, можно задействовать команду ps –p $$ , возвращающую информацию о процессе с заданным идентификатором. В нашем случае, идентификатором оболочки являются символы $$ :

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

Типы командных оболочек

В *nix-системах существует два основных типа оболочек: оболочки на основе Bourne shell и оболочки на основе C shell.

Типичными представителями оболочек типа Bourne shell являются:

sh (Bourne shell)

bash (Bourne Again shell)

К оболочкам типа C Shell относятся:

tcsh (TENEX/TOPS C shell)

Ниже представлены некоторые из самых распространенных шеллов, используемых в *nix-системах:

Примечание: Термин «*nix-системы» обозначает Unix-подобные операционные системы.

sh (Bourne shell)

sh (сокр. от «Bourne shell») — это самая старая (среди рассматриваемых) оболочка, написанная Стивеном Борном из AT&T Bell Labs для ОС UNIX v7. Оболочка доступна практически в любом *nix-дистрибутиве. Многие другие шеллы уходят своими корнями именно к sh. Благодаря своей скорости работы и компактности, данная оболочка является предпочтительным средством для написания shell-скриптов. К её недостаткам можно отнести отсутствие функций для использования оболочки в интерактивном режиме, а также отсутствие встроенной обработки арифметических и логических выражений.

Примечание: Стоит отметить, что из-за общего морального устаревания оболочки, в современных системах ссылка на шелл sh (/bin/sh), обычно, является псевдонимом для запуска текущей, более новой оболочки.

Характерные черты sh:

Полные пути к интерпретатору: /bin/sh и /sbin/sh.

Приглашение для обычного пользователя: $ .

Приглашение для суперпользователя (root): # .

bash (Bourne-Again shell)

bash (сокр. от «Bourne–Again shell») — это усовершенствованный и дополненный вариант шелла sh, является одной из самых популярных современных командных оболочек *nix-систем.

Объединяет в себе полезные фишки оболочек ksh и csh.

Поддерживает навигацию при помощи стрелок, благодаря чему можно просматривать историю команд и выполнять редактирование прямо в командной строке.

Характерные черты bash:

Полный путь к интерпретатору: /bin/bash.

Приглашение для обычного пользователя: имя_пользователя@имя_хоста:

— это домашний каталог текущего пользователя, например, mrsmith@mypc:

Приглашение для суперпользователя (root): root@имя_хоста:

ksh (Korn shell)

ksh (сокр. от «Korn shell») — это командная оболочка, разработанная Дэвидом Корном из AT&T Bell Labs в 1980-x годах.

Является расширением sh.

Имеет обратную совместимость с sh.

Имеет интерактивный функционал, сравнимый с csh.

Читайте также:  Косынка для linux mint

Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений/функций, Си-подобный синтаксис скриптов и средства для работы со строками.

Работает быстрее, чем csh.

Может запускать скрипты, написанные для sh.

Характерные черты ksh:

Полный путь к интерпретатору: /bin/ksh.

Приглашение для обычного пользователя: $ .

Приглашение для суперпользователя (root): # .

csh (C shell)

csh (сокр. от «C shell») — это командная оболочка, созданная Биллом Джоем (автором редактора vi) с целью усовершенствования стандартного шелла Unix (sh).

Имеет встроенные функции для интерактивного использования, например, псевдонимы (aliases) и историю команд.

Включает в себя удобные для программирования функции, такие как: встроенную поддержку арифметических выражений и Cи-подобный синтаксис скриптов.

Характерные черты csh:

Полный путь к интерпретатору: /bin/csh.

Приглашение для обычного пользователя: % .

Приглашение для суперпользователя (root): # .

tcsh (TENEX C Shell)

tcsh (сокр. от «TENEX C shell») — это командная оболочка, созданная Кэном Гриром, которая позиционируется как улучшенная версия шелла csh.

Имеет полную совместимость csh.

Именно в данном шелле впервые появилась функция автодополнения команд и путей.

Удобна для интерактивной работы.

Поддерживает редактор командной строки в стиле vi или emacs.

Является стандартным шеллом во FreeBSD.

Характерные черты tcsh:

Полный путь к интерпретатору: /bin/tcsh.

Приглашение для обычного пользователя: имя_хоста:

Приглашение для суперпользователя (root): # .

zsh (Z Shell)

zsh (сокр. от «Z shell») — это командная оболочка, созданная Паулем Фалстадом во время его учебы в Принстонском университете, позиционируется как свободная современная sh-совместимая командная оболочка.

Среди стандартных шеллов больше всего похожа на ksh, но включает в себя множество улучшений.

Встроенная поддержка программируемого автодополнения команд, имен файлов и пр.

Поддержка проверки орфографии и опечаток.

Раздельная история команд для одновременной работы с несколькими запущенными шеллами.

Характерные черты zsh:

Полный путь к интерпретатору: /bin/zsh.

Приглашение для обычного пользователя: имя_хоста% .

Приглашение для суперпользователя (root): root@имя_хоста:

Резюмируем

Краткая сводная таблица для 6 вышерассмотренных командных оболочек:

Командная оболочка Путь Приглашение (обычный пользователь) Приглашение (root)
sh (Bourne Shell) /bin/sh и /sbin/sh $ #
bash (Bourne-Again Shell) /bin/bash имя_пользователя@имя_хоста:

$ имя_пользователя@имя_хоста:

# ksh (Korn Shell) /bin/ksh $ # csh (C Shell) /bin/csh % # tcsh (TENEX C Shell) /bin/tcsh имя_хоста:

> # zsh (Z Shell) /bin/zsh % #

Примечание: Помимо представленных выше оболочек, есть еще и такие оболочки, как:

mksh — оболочка, основной упор в которой сделан на написание скриптов;

dash — более легковесная в сравнении с bash оболочка, но из-за этого обладающая ограниченной функциональностью;

fish — «новая» оболочка, написанная в 2005 году, отличительной чертой которой является упор на комфорт использования и упрощение командного языка;

Поделиться в социальных сетях:

Источник

Как узнать, какую оболочку вы используете в Linux

Главное меню » Операционная система Linux » Как узнать, какую оболочку вы используете в Linux

Вы можете удивиться этому в нескольких ситуациях.

Например, если вы входите в неизвестную вам систему Linux, вы можете спросить, какая оболочка используется по умолчанию. Если вы часто меняете оболочку в Linux, вы можете спросить, какую оболочку вы используете в данный момент.

Позвольте нам показать вам различные команды Linux, чтобы выяснить, какую оболочку вы используете.

Узнайте, какую оболочку вы используете в Linux

Теперь нет команды, которая даст вам этот вывод со 100% точностью для всех оболочек. Но эти команды должны быть точными для большинства оболочек.

Способ 1

Вы можете использовать специальный параметр оболочки $$. «$$» указывает идентификатор процесса текущего экземпляра оболочки, которую вы запускаете. Этот параметр доступен только для чтения и не может быть изменен.

Если вы попытаетесь просмотреть информацию о процессе, она должна показать вам имя процесса, т.е. оболочку здесь.

Вывод должен быть таким:

Способ 2

Вы также можете использовать $0. $0 может быть именем оболочки или именем сценария оболочки. Когда он используется внутри сценария оболочки, он обозначает имя сценария.

Но если вы используете его в оболочке без имени файла, он покажет имя оболочки.

Вывод будет просто иметь имя оболочки:

Способ 3

Вы также можете использовать команду pstree. pstree означает дерево процессов и показывает все запущенные процессы в виде дерева.

Если вы не укажете аргумент, он покажет все процессы из init или systemd.

Однако, если вы дадите ему идентификатор процесса, он покажет весь этот процесс как корень дерева. Другими словами, он покажет все процессы, инициированные этим процессом.

Вы можете использовать тот же параметр $$ bash, который мы видели в методе 1.

Способ 4

Последний метод использует файлы в каталоге proc. Если вы прочитали статью о проверке информации о процессоре в Linux, вы, вероятно, уже знаете, что этот каталог содержит информацию о системе времени выполнения вашей системы Linux.

Вы можете использовать следующую команду, чтобы получить оболочку, которую вы используете:

Вывод должен дать вам имя оболочки.

Бонусный совет: узнайте версию оболочки

Итак, вы узнали, как узнать, какую оболочку вы используете. Как насчет версии используемой оболочки? Вы можете получить версию оболочки, просто добавив –version после имени вашей запущенной оболочки.

Например, если вы используете zsh, вы можете использовать это:

Вывод даст вам информацию о версии:

Мы надеемся, что эта статья помогла вам узнать, какую оболочку вы используете. Не забудьте проверить еще один простой совет по изменению оболочки в Linux.

Кстати, вы используете другой способ проверить, какую оболочку вы используете? Почему бы не поделиться им с нами в разделе комментариев?

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Читайте также:  Последний офис для windows
Оцените статью