Bash: введение

Командной оболочке bash посвящено бессчётное число материалов, к которым я, не являясь ни её любителем, ни, тем более, знатоком, мало чего могу добавить. Однако bash -- наиболее распространённая среди пользователей Linux командная оболочка, выступающая в этой ОС к тому же общесистемной и умолчальной. И потому совсем обойти её вниманием в книге о FOSS невозможно.

Популярна bash и среди пользователей иных POSIX-систем: так, она является единственной оболочкой в базовой установке OpenSolaris. А ныне принята она и в MacOS X, где сменила традиционную для BSD-систем tcsh, о которой будет отдельный рассказ.

Для начала я хотел бы выразить благодарность Сергею Майкову aka Madskull, Александру Баракину aka sash-kan и многим другим участникам обсуждения тем, связанных с bash, на Юниксфоруме и POSIX.ru. Без этого я ни за что не сподвигнулся на использование этой оболочки, не говоря уже о том, чтобы о ней писать.

Как уже говорилось, во всех дистрибутивах Linux в качестве пользовательской командной оболочки выступает bash, что расшифровывается как "еще одна оболочка Борна", "заново рожденный шелл" и тому подобным образом. Она происходит от первого шелла первозданного Unix'а, разработанного Борном (которая именовалась просто shell или sh), но снабжена многими дополнительными возможностями. Эта оболочка оказалась тесно интегрирована с операционной системой Linux: именно bash волею судеб стал одной из первых программ, которые Линус запустил поверх своего новосозданного ядра. И потому идеи bash-скриптинга пронизали Linux до самых его оснований -- достаточно сказать, что большинство сценариев инициализации в каталоге /etc представляют именно bash-скрипты.

Однако роль bash не исчерпывается скриптингом -- в первую очередь это среда для выполнения пользовательских команд. Как и во всех прочих шеллах, в bashразличаются команды внешние и встроенные команды оболочки. Bash поддерживает множество таких встроенных команд -- полный список можно увидеть на man-странице bash-builtins

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

Важно, что существует дополнительный пакет bash-completion: установка его обогащает базовую оболочку множеством опциональных средств настройки автодополнения (в том числе и для командных аргументов). Правда, чтобы эта дополненная оболочка была по настоящему удобной и функциональной, нужно приложить некоторые усилия по её настройке, чем мы и займёмся на ближайшей странице.


Содержание

. .