Оболочка является интерфейсом командной строки Unix. Можно ввести команды в оболочке в интерактивном режиме или записать сценарии для автоматизации задач. Используйте этот тег для вопросов, относящихся/bin/sh и самых совместимых оболочек (пепел, удар, ksh, zsh, …). Для сценариев оболочки с ошибками проверьте их в http://shellcheck.net прежде, чем отправить здесь.

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

Более точно, если иначе не указано, оболочка Unix совместима с POSIX / Единственная спецификация оболочки UNIX. Большинство Нельдов имеет такую оболочку в наличии как /bin/sh.

Используйте этот тег для вопросов, которые относятся к большинству оболочек Bourne/POSIX-style. Для вопросов об определенной оболочке используйте тег той оболочки вместо этого (см. ниже).

Связанные теги

  • для того, когда Вы хотите сделать что-то без GUI и Вашего вопроса, не особенно об интерпретаторе команд
  • для вопросов об автоматизации задачи, когда Вам конкретно не нужна автоматизация, чтобы быть сценарием оболочки
  • для вопросов о среде режима сопроводительного текста

Реализации Shell

Основные оболочки стиля Границы

  • Оболочка Bourne является одной из двух выживающих оболочек с былых времен, теперь главным образом замененных различными оболочками, названными пеплом, ksh и ударом. Спецификация POSIX основывается на Оболочке Bourne.
  • Bash стиль Границы, совместимая POSIX оболочка из проекта GNU. Это - интерактивная и пишущая сценарий оболочка по умолчанию на большинстве дистрибутивов Linux, и доступный на большинстве других Нельдов. Bash добавляет много опций, и для сценариев и для интерактивного использования.
  • Ksh стиль Границы, совместимая POSIX оболочка. Это добавляет много расширенных опций, главным образом для сценариев. Хотя ksh был открытым исходным кодом с 2000, это является еще менее привилегированным в мире с открытым исходным кодом, и существует несколько частичных клонов ksh, как .
  • Zsh главным образом стиль Границы, но с несколькими синтаксическими различиями. Это имеет режим эмуляции POSIX. Это имеет много дополнительных функций, и для сценариев и для интерактивного использования.
  • Almquish Shell относительно маленькая совместимая с границей оболочка. Это имеет два известных ветвления:
    • Busybox содержит главным образом совместимую POSIX оболочку (busybox ash) с некоторыми возможностями выпуска строки вместе со многими простыми утилитами. Это предназначено к встроенным системам и поэтому настойчиво оптимизируется для размера. Busybox также содержит другую маленькую подобную границе оболочку, названную тишиной.
    • Тире совместимая POSIX реализация /bin/sh это имеет целью быть как можно меньше. Это делает это, не жертвуя скоростью, если это возможно.

Другие известные оболочки

  • Оболочка C является одной из двух выживающих оболочек с былых времен. Это не одобрено для сценариев. Основная реализация сегодня является tcsh. Оболочки C раньше имели более интерактивные функции, чем оболочки стиля Границы, но удар и zsh теперь настигли tcsh.
  • Рыба относительный вновь прибывший, вдохновленный классическим и нацеливающимся для объединения питания и простоты.

Дальнейшее чтение

Интерактивное использование

Это функции, обычно находимые в оболочках с хорошей поддержкой взаимодействия (удар, tcsh, zsh, рыба):

  • выпуск командной строки , часто с настраиваемыми привязками клавиш. в ударе.
  • история команд, по которым можно переместиться с Вверх и вниз по ключам, искала и т.д.; также механизм отзыва на основе расширения начала последовательностей !.
  • завершение частично вводимых имен файлов, названий команды, опций и других аргументов.
  • управление фоновыми процессами.
  • , показывающая подсказку перед каждой командой, которую многим пользователям нравится настраивать.
  • , определяющий краткие названия для часто используемых команд

Дальнейшее чтение

Сценарии Shell

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

Почти каждая подобная Unix система обеспечивает совместимую POSIX оболочку, обычно как /bin/sh. Таким образом, сценарии, имеющие целью быть портативными между вариантами Unix, должны быть записаны согласно тому стандарту и запуститься с #!/bin/sh строка хижины.

Много систем имеют, по крайней мере, ksh или колотят доступный. Они обеспечивают много полезных расширений, хотя не всегда с тем же синтаксисом. Функции, существующие и в (и в zsh), включают локальные переменные в функцию, переменные типа массив, двойной синтаксис скобки для условных выражений ([[ … ]]), и (требование, чтобы опция была установлена в ударе и zsh) дополнительные globbing шаблоны такой как @(…).

Общая трудность при программировании оболочки заключает в кавычки. В отличие от этого, на большинстве языков программирования, почти все - строка, и заключение в кавычки только необходимо вокруг специальных символов. Однако некоторые случаи хитры. В частности, распространенная ошибка то, что переменный и общий substitions ($foo, $(foo)) подвергнитесь дальнейшему расширению, и должен быть защищен двойными кавычками ("$foo", "$(foo)") если то дальнейшее расширение не желаемо.

Полезные инструменты

  • checkbashisms (от devscripts пакет), полезный инструмент для обеспечения, что сценарий оболочки совместим POSIX и не использует функции, не указанные POSIX.

  • ShellCheck является веб-приложением, которое анализирует сценарии оболочки и проверки на частые ошибки (и синтаксис и семантические ошибки), а также соответствие стандарту POSIX, например, он выделяет закрывшие кавычки переменные и Bashisms (если sh используется в хижине). Это может также быть установлено как инструмент командной строки, который может быть выполнен локально.

Связанные теги

Дальнейшее чтение