Что такое шелл линукс

Command-line shell (Русский)

Кома́ндная оболо́чка UNIX (англ. Unix shell, часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства UNIX, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в Unix Version 7.

Список оболочек

  • Bash — (от англ. Bourne again shell, каламбур «Born again» shell — «возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.

Bash — это командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом (или сценарием). Как и все Unix-оболочки, он поддерживает автодополнение имён файлов и директорий, подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления и цикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из sh. Другие функции, например, история, были скопированы из csh и ksh. Bash в основном удовлетворяет стандарту POSIX, но с рядом расширений. Кроме того, большинство сценариев SH можно запустить в Bash без изменений.

https://www.gnu.org/software/bash/ || bash

  • C shell — C shell (csh) — командная оболочка UNIX со встроенным скриптовым языком, разработанная Биллом Джоем, активным разработчиком BSD UNIX и создателем редактора vi, в 1979 году.

Базировался на коде командного интерпретатора шестой версии UNIX. Скриптовый язык не уступает шеллу Борна по мощности, но отличается синтаксисом. В то время как Борн скопировал все основные операторы с языка Алгол 68, Билл Джой использовал в качестве макета язык Си, вероятно, руководствуясь своими предпочтениями и предпочтениями других пользователей BSD UNIX. В начале 1990-х C shell подвергся большой критике за свою двусмысленность и немногословность интерпретатора, останавливающего выполнение скрипта, но не сообщающего никаких подробностей о том, что же всё-таки произошло. Порой скрипты csh работали совсем не так, как этого ожидал пользователь. Также встречались ситуации, когда интерпретатор отбраковывал, казалось бы, непротиворечивые строки кода. C shell вошёл в поставку 4.1BSD и до сих пор остаётся базовой частью всех её потомков, в том числе FreeBSD и OpenBSD.

https://www.tcsh.org || tcsh

  • DASH — POSIX-совместимая реализация /bin/sh стремящаяся быть более компактной. Dash делает это без ущерба для быстродействия, где это возможно.

На самом деле, он значительно быстрее, чем Bash (the GNU Bourne-Again SHell) для большинства задач.

herbert/dash/ || dash

  • fish — Умная и удобная коммандная оболочка (развивающаяся как более дружественная к пользователю альтернатива bash и zsh). Fish делает полную цветную подсветку синтаксиса командной строки, а также подсветку завершения команд и их аргументов, существующих файлов, и истории. С автоматическим выявлением ошибок ввода, предложеним возможных вариантов ввода на основе истории прошлых операций, автодополнение ввода опций и команд с использованием их описания в man-руководствах, комфортнаю работу из коробки без необходимости дополнительной настройки, упрощённый язык написания сценариев, поддержку буфера обмена X11, удобные средства поиска в истории выполненных операций. Легкий просмотр последних команд может быть сделан с помощью Alt-Up. Демон Fish (fishd) облегчает синхронизирование истории во всех случаях использовнаия fish, а также универсальных и постоянных переменных сред.

https://fishshell.com/ || fish

  • Korn shell — Командная оболочка UNIX. Имеет полную обратную совместимость с Bourne shell и включает в себя возможности C shell. Язык KornShell представляет собой полный, мощный язык программирования высокого уровня, для написания приложений. Зачастую легче и быстрее, чем на других языках высокого уровня. Это делает его особенно подходящим для прототипирования. Ksh имеет лучшие черты оболочки Bourne и C, плюс множество самостоятельных возможностей. Таким образом Ksh может сделать многое, чтобы повысить производительность и качество вашей работы в взаимодействии с системой и в программировании. Ksh программы легче писать, они более кратки и читабельны, чем программы написанные на языке нижнего уровня, такого как C.

http://www.kornshell.com || Смотрите Ksh#Installation

  • Oh — Unix оболочка, написанная на Go. Это оболочка в духе Unix, но отличается различными деталями. Oh расширяет возможности языка программирования оболочки без ущерба интерактивных функций оболочки.

https://github.com/michaelmacinnis/oh || oh-gitAUR

  • rc — Командный интерпретатор для Plan 9, который предоставляет анологичные средства оболочки Bourne для UNIX. С небольшими дополнениями и менее своеобразным синтаксисом.
Читайте также:  Windows qt static build windows

http://plan9.bell-labs.com/sys/doc/rc.html [устаревшая ссылка 2020-08-02] || 9base-gitAUR

  • Zsh — Оболочка предназначена для интерактивного использования, хотя это такойже мощный скриптовый язык. Многие из полезных особенностей Bash, Ksh и Tcsh были включены в Zsh; были добавлены многие оригинальные черты. Страничка вводный документ перечислены некоторые из уникальных особенностей Zsh

https://www.zsh.org/ || zsh

из Wikipedia Zsh Это одна из современных командных оболочек UNIX, может использоваться как интерактивная оболочка, либо как мощный скриптовой интерпретатор. Zsh является расширенным bourne shell с большим количеством улучшений. Первая версия zsh была написана Паулем Фалстадом (Paul Falstad) в 1990 году, когда он был студентом Принстонского университета. Название ZSH произошло от университетского ассистента по имени Чжун Шао (Zhong Shao). Пол подумал, что учётная запись Чжуна, «zsh», будет хорошим названием для командной оболочки[1]. Сейчас развивается энтузиастами, под руководством Петера Стефенсона (Peter Stephenson) в рамках свободного проекта. Некоторые полезные особенности:

  1. Программируемое автодополнение, которое помогает пользователям вводить как команды, так и их аргументы, со встроенной поддержкой нескольких сотен команд;
  2. Разделяет историю команд между всеми запущенными экземплярами оболочки;
  3. Расширенное дополнение названий файлов, что позволяет указать файл без необходимости запускать внешние программы, наподобие find;
  4. Расширенная поддержка переменных и массивов;
  5. Редактирование многострочных команд в едином буфере;
  6. Коррекция опечаток;
  7. Имеет различные режимы совместимости (то есть, вы можете использовать zsh вместо bourne shell при запуске, как /bin/sh);
  8. Модифицируемые приглашения (prompts), включающие возможность расположить приглашение справа и настроить автоскрытие при наборе длинных команд;

Выбор оболочки по умолчанию

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

Посмотрите все установленные оболочки:

И установить одну по умолчанию для вашего пользователя (убедитесь, что вы используете полный путь, какой выдала команда chsh -l ):

Теперь, если вы выйдите из системы и войдёте снова, вас встретит установленная оболочка.

Источник

Как определить и изменить командную оболочку (shell) в Linux

Что такое командная оболочка

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

Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.

Оболочки Linux

Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.

Существуют разные оболочки Linux. Можно отметить:

  • bash
  • csh
  • dash
  • fish
  • ksh
  • pdksh
  • rbash
  • sh
  • tcsh
  • zsh

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

Как определить текущую командую оболочку

Есть несколько способов определить оболочку, используемую по умолчанию в вашей системе Linux. Рассмотрим несколько из них, так как в разных системах (и оболочках) какие-то способы могут не сработать.

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

Способ 1

Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:

Из вывода команды, мы видим, что используется оболочка bash.

Способ 2

Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.

Способ 3

Определим, работающий процесс оболочки командой ps.

Как посмотреть список оболочек, доступных в системе

Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells

Выведем содержимое файла /etc/shells , для этого выполняем команду:

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

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

Например, переключимся на оболочку sh. Выполняем команду:

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

Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).

Чтобы изменить оболочку текущего пользователя нужно выполнить команду:

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

Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):

После этого нужно выйти и снова войти в систему.

Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:

Заключение

Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.

Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:

Читайте также:  Что делать если исчезли ярлыки с рабочего стола windows

Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду

Источник

Оболочка пользователя ( shell ) в Linux.

Операционные системы семейства Linux, как впрочем, и любые другие ОС, предполагают наличие интерфейса взаимодействия между компонентами компьютерной системы и конечным пользователем, т. е. наличие программного уровня, который обеспечивает ввод команд и параметров для получения желаемых результатов. Такой программный уровень получил название «оболочка» или, на английском языке — shell .

Что такое оболочка ?

Командная оболочка ( shell ) обеспечивает взаимотействие между пользователем и средой операционной системы Linux. Она является специализированным программным продуктом, который обеспечивает выполнение команд и получения результатов их выполнения, или, если совсем уж упрощенно, оболочка — это программа, которая предназначена для обеспечения выполнения других программ по желанию пользователя. Примером оболочки может быть, например, интерпретатор команд command.com операционной системы MS DOS, или оболочка bash операционных систем Unix / Linux.

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

— Интерпретация командной строки.

— Доступ к командам и результатам их выполнения.

— Поддержка переменных , специальных символов и зарезервированных слов.

— Обработка файлов, операций стандартного ввода и вывода.

— Реализация специального языка программирования оболочки.

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

sh — оболочка Bourne , классическая оболочка для ОС Unix

bash оболочка Bourne Again (GNU Bourne-Again SHell). Пожалуй, наиболее распространенная на данный момент, оболочка в среде ОС семейства Linux.

ksh — оболочка Korn , разработанная в качестве развития оболочки Bourne с историей командной строки и возможностью редактирования команд.

csh — оболочка C , использующая синтаксис популярного языка программирования C

tcsh — версия оболочки C с интерактивным редактированием командной строки.

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

В процессе загрузки операционных систем семейства Linux, после загрузки ядра системы выполняется переход в интерактивный режим – режим взаимодействия пользователя и операционной системы. В ОС Linux, первым запускаемым в ходе загрузки процессом, является программа инициализации init , которая считывает содержимое конфигурационного файла /etc/inittab , определяет перечень и характеристики терминалов, имеющихся в системе, и вызывает программу интерактивного входа getty , отображающую приглашение для ввода имени пользователя. После ввода имени пользователя и пароля, программа getty вызывает программу login , которая проверяет достоверность учетной записи, выполняет переход в домашний каталог пользователя и передает управление программе начального запуска сеанса, в качестве которой обычно используется программа оболочки пользователя, конкретная разновидность которой определяется содержимым файла /etc/passwd для данной учетной записи. Например:

user1:x:508:511::/home/user1:/bin/sh
interbase:x:510:511::/home/interbase:/bin/csh
apb:x:511:513:apb:/home/apb:/bin/bash

Как видно из содержимого файла /etc/passwd, для пользователя user1 будет запущена оболочка sh ( оболочка Bourne ), для пользователя interbase — оболочка csh (оболочка C ) и для пользователя apb — оболочка bash ( Bourne Again ). После старта оболочки, на экран выводится приглашение к вводу команд ( обычно в виде знака доллара $ , если работа выполняется в контексте учетной записи обычного пользователя , или фунта # , если оболочка используется под учетной записью привилегированного пользователя ( root ).

При выходе из оболочки, ядро системы возвращает управление программе init , которая перезапускает процесс входа в систему и на терминале отображается приглашение к вводу имени пользователя. Выход из оболочки может быть выполнен одним из двух способов :

— посредством команды exit выполненной пользователем

— при получении процессом оболочки сигнала kill , отправленного ядром, например при перезагрузке системы.

Интерпретация командной строки.

Пользовательский ввод в ответ на приглашение оболочки обычно называют командной строкой или командой . Команда Linux — это строка символов из имени команды и аргументов, разделенных пробелами. Аргументы предоставляют команде дополнительные параметры, определяющие ее поведение. Наиболее часто в качестве аргументов используются опции и имена файлов и каталогов. Например, командная строка

ls -l file01 file02

содержит команду ls , опцию -l и два имени файлов file01 file02 .

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

Команды, являющиеся частью оболочки, называются встроенными. К таким командам относятся, например, cd, if, case и т. п. Естественно, встроенные команды могут отличаться для различных вариантов оболочек. Кроме встроенных команд, возможно использование программных модулей, представляющих собой отдельные исполняемые файлы, или файлов скриптов или сценариев — обычных текстовых файлов, содержащих последовательно выполняемые строки с командами оболочки. Некоторые скрипты (сценарии) могут выполняться процессами Linux, как например, планировщиком задач cron . Планировщик задач, как правило, предназначен для автоматического выполнения задач администрирования системы по расписанию. Задачи cron представляют собой команды или скрипты и выполняются автоматически, без какого либо вмешательства человека и могут выполняться в контексте разных учетных записей пользователей. В случае, когда задача планировщика предполагает выполнение какого-либо скрипта, возникает проблема выбора оболочки, которая должна быть запущена в качестве дочернего процесса cron для обработки команд из файла скрипта — ведь оболочка может быть любой, а синтаксис скрипта, как правило, предполагает использование конкретной оболочки, под которую он написан. Для устранения данной проблемы, в ОС семейства Linux принято в первой строке скрипта указывать разновидность оболочки, необходимой для его выполнения, в виде:

Читайте также:  Звук то тихий то громкий windows 10

#!/bin/bash — для оболочки bash

#!/bin/sh — для оболочки sh

Знак # является признаком комментария и следующие за ним символы не интерпретируются в качестве команды. Такой прием позволяет явно указать, какая оболочка должна быть использована для обработки последующего содержимого файла. Если же скрипт не содержит запись, явно определяющую требуемую оболочку, то будут использованы настройки из учетной записи, в контексте которой выполняется данный скрипт. В этом случае, возможна ситуация, когда скрипт, написанный для оболочки, например, tch будет передан для выполнения в оболочку bash , что приведет к невозможности его выполнения.

При выполнении команд или сценариев используются переменные окружения (на английском языке — environment , значения которых характеризуют программную среду, в которой происходит выполнение команд. Такие переменные могут содержать общие настройки системы, параметры графической или командной оболочки, пути исполняемых файлов и т.п. Значения переменных окружения устанавливаются на уровне системы (для всех пользователей) и на уровне конкретного пользователя. Для установки переменных окружения на уровне системы используется содержимое файлов:

/etc/profile — устанавливает переменные только для командных оболочек. Может запускать любые скрипты в оболочках, совместимых с Bourne shell.

/etc/bash.bashrc — устанавливает переменные только для интерактивных оболочек. Он также запускает bash-скрипты.

/etc/environment — используется модулем PAM-env. В этом файле можно указывать только пары имя=значение .

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

/bin в переменную PATH для всех пользователей, поместите следующий код в один из системных файлов инициализации окружения (/etc/profile или /etc/bash.bashrc):

# Если идентификатор ID пользователя более или равно 1000, и существует каталог

#не был ранее добавлен в переменную PATH,

/bin в переменную $PATH.

if [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin)

Как правило, в операционных системах Linux, идентификатор пользователя менее 1000 или менее 500 используется для служебных учетных записей. В данном примере, переменная окружения будет установлена для всех локальных пользователей системы с идентификатором 1000 или более.

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

/.bash_login и т.п. — файлы инициализации командной оболочки из домашнего каталога пользователя.

/.profile — файл инициализации профиля пользователя. Используется многими оболочками для определения переменных среды.

/.pam_environment — пользовательский аналог файла /etc/environment, который используется модулем PAM-env.

Например, чтобы добавить каталог пользователя

/bin в пути поиска исполняемых файлов, заданных переменной PATH , можно например, в файл

/.profile поместить строку:

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

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

/bin в пути поиска исполняемых файлов:

Новое значение переменной PATH будет действовать только до завершения текущего сеанса пользователя.

Для просмотра значения переменной можно использовать команду echo $переменная , например:

В настоящее время, самой распространенной оболочкой, как уже упоминалось выше, является bash . Вызвано это, в первую очередь тем, что оболочка bash является sh — совместимой командной оболочкой, в которую добавлены полезные возможности из оболочек Korn shell ( ksh ) и C shell ( csh ). Оболочка bash может без какой-либо модификации выполнять большинство скриптов, написанных под язык программирования оболочки sh и в максимальной степени пытается приблизиться к стандарту POSIX , что привело к появлению множества улучшений, причем как для программирования, так и использования в интерактивном режиме. В современной реализации bash имеется режим редактирования командной строки, неограниченный размер истории команд, средства управление заданиями, возможность использования псевдонимов, обширный перечень встроенных команд, функции командной оболочки и т.п. В целом, bash в наибольшей степени соответствует потребностям среднестатистического пользователя, что и сделало ее наиболее используемой в среде Linux.

При запуске bash без параметров командной строки, оболочка запускается в интерактивном режиме, отображая на экране приглашение к вводу команд. Интерактивная оболочка обычно читает данные из терминала пользователя и пишет данные в этот же терминал, стандартным устройством ввода является клавиатура, а стандартным устройством вывода – дисплей. Пользователь вводит команды на клавиатуре, а результат их выполнения отображается на дисплее.

Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети

Источник

Оцените статью