Оболочка является интерфейсом командной строки Unix. Можно ввести команды в оболочке в интерактивном режиме или записать сценарии для автоматизации задач. Используйте этот тег для вопросов, относящихся/bin/sh и самых совместимых оболочек (пепел, удар, ksh, zsh, …). Для сценариев оболочки с ошибками проверьте их в http://shellcheck.net прежде, чем отправить здесь.
Оболочка является программой, основная роль которой состоит в том, чтобы позволить пользователю назвать другие программы и заставить их взаимодействовать. В контексте Unix оболочка является почти всегда интерпретатором командной строки.
Более точно, если иначе не указано, оболочка Unix совместима с POSIX / Единственная спецификация оболочки UNIX. Большинство Нельдов имеет такую оболочку в наличии как /bin/sh
.
Используйте этот тег для вопросов, которые относятся к большинству оболочек Bourne/POSIX-style. Для вопросов об определенной оболочке используйте тег той оболочки вместо этого (см. ниже).
busybox ash
) с некоторыми возможностями выпуска строки вместе со многими простыми утилитами. Это предназначено к встроенным системам и поэтому настойчиво оптимизируется для размера. Busybox также содержит другую маленькую подобную границе оболочку, названную тишиной./bin/sh
это имеет целью быть как можно меньше. Это делает это, не жертвуя скоростью, если это возможно.Это функции, обычно находимые в оболочках с хорошей поддержкой взаимодействия (удар, tcsh, zsh, рыба):
!
.Оболочки имеют традиционные управляющие структуры (условные выражения, циклы), а также означает комбинировать процессы (в особенности канал). Они имеют встроенную поддержку нескольких задач, таких как арифметическая и основная обработка строк, но полагаются на внешние команды для других вещей.
Почти каждая подобная Unix система обеспечивает совместимую POSIX оболочку, обычно как /bin/sh
. Таким образом, сценарии, имеющие целью быть портативными между вариантами Unix, должны быть записаны согласно тому стандарту и запуститься с #!/bin/sh
строка хижины.
Много систем имеют, по крайней мере, ksh или колотят доступный. Они обеспечивают много полезных расширений, хотя не всегда с тем же синтаксисом. Функции, существующие и в (и в zsh), включают локальные переменные в функцию, переменные типа массив, двойной синтаксис скобки для условных выражений ([[ … ]]
), и (требование, чтобы опция была установлена в ударе и zsh) дополнительные globbing шаблоны такой как @(…)
.
Общая трудность при программировании оболочки заключает в кавычки. В отличие от этого, на большинстве языков программирования, почти все - строка, и заключение в кавычки только необходимо вокруг специальных символов. Однако некоторые случаи хитры. В частности, распространенная ошибка то, что переменный и общий substitions ($foo
, $(foo)
) подвергнитесь дальнейшему расширению, и должен быть защищен двойными кавычками ("$foo"
, "$(foo)"
) если то дальнейшее расширение не желаемо.
checkbashisms
(от devscripts
пакет), полезный инструмент для обеспечения, что сценарий оболочки совместим POSIX и не использует функции, не указанные POSIX.
ShellCheck является веб-приложением, которое анализирует сценарии оболочки и проверки на частые ошибки (и синтаксис и семантические ошибки), а также соответствие стандарту POSIX, например, он выделяет закрывшие кавычки переменные и Bashisms (если sh
используется в хижине). Это может также быть установлено как инструмент командной строки, который может быть выполнен локально.