При закрытии подписчики были переданы в рассылку "Интернет: маркетинг, реклама, торговля" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Служба Рассылок Subscribe.Ru |
Уважаемые подписчики! Этот выпуск - первый из серии, посвященной командному интерпретатору bash. Перевод сделан 3-4 апреля по справочному руководству ОС Solaris 8.
Поскольку по правилам оформления рассылок в них не должно быть "висящих" гиперссылок href, не все перекрестные ссылки в выпусках, посвященных bash, оформлены как гиперссылки. Когда перевод будет закончен, вы сможете скачать с сайта рассылки всю страницу в целом, со всеми необходимыми перекрестными и внешними ссылками.
Вот здесь можно прочитать очередную статью про "Linux в кармане".
bash - командный интерпретатор GNU Bourne-Again SHell
Командный интерпретатор bash создан Фондом свободно распространяемого программного обеспечения. Copyright (C) 1989-1999 by the Free Software Foundation, Inc.
bash - это sh-совместимый интерпретатор командного языка, выполняющий команды, прочитанные со стандартного входного потока или из файла. Командный интерпретатор bash также включает полезные средства командных интерпретаторов Korn и C (ksh и csh).
Командный интерпретатор bash создавался как соответствующий спецификации командного интерпретатора и инструментальных средств IEEE POSIX (IEEE POSIX Shell and Tools specification) (IEEE Working Group 1003.2).
Помимо однобуквенных опций командного интерпретатора, представленных в описании встроенной команды set, bash интерпретирует при вызове следующие опции:
-c строка | Если указана опция -c, команды читаются из строки. Если после строки есть аргументы, их значения присваиваются позиционным параметрам, начиная с $0. |
-r | Если указана опция -r, командный интерпретатор становится ограниченным (см. "ОГРАНИЧЕННЫЙ КОМАНДНЫЙ ИНТЕРПРЕТАТОР" ниже). |
-i | Если указана опция -i, командный интерпретатор работает как интерактивный. |
-s | Если указана опция -s или если после обработки опций аргментов не остается, команды читаются из стандартного входного потока. Эта опция позволяет устанавливать позиционные параметры при вызове интерактивного командного интерпретатора. |
-D | Список всех строк в двойных кавычках с префиксом $ выдается в стандартный выходной поток. Это строки, которые необходимо перевести на соответствующий язык, если текущая локаль отличается от C или POSIX. При этом неявно предполагается опция -n; никакие команды выполняться не будут. |
-- | Пара дефисов (--) обозначает конец опций и отключает их дальнейшую обработку. Любые аргументы после -- рассматриваются как имена файлов и аргументы. Аргумент - эквивалентен --. |
Командный интерпретатор bash также интерпретирует несколько многосимвольных опций. Эти опции, чтобы они были распознаны, должны указываться в командной строке перед односимвольными опции.
Если после обработки опций остались аргументы и не указаны опции -c или -s, первый аргумент считается именем файла, содержащего команды интерпретатора. Если bash вызван таким образом, параметр $0 устанавливается равным имени файла, а значениями позиционных параметров становятся другие аргументы. Командный интерпретатор bash читает и выполняет команды из этого файла, а затем завершает работу. Статусом выхода bash является статус выхода последней команды, выполненной в сценарии. Если ни одна команда не выполнена, статус выхода - 0.
Начальный командный интерпретатор (login shell) - это интерпретатор, первый символ нулевого аргумента которого является дефисом (-) или который запущен с опцией --login.
Интерактивным является командный интерпретатор, стандартный входной и выходной потоки которого подключены к терминалам (что определяется с помощью функции isatty(3)), или запущенный с опцией -i. Переменная среды PS1 устанавливается и флаги ($-) включают i, только если bash является интерактивным интерпретатором, что позволяет проверить это в файле начального запуска или в сценарии командного интерпретатора.
Следующие абзацы описывают, как bash выполняет свои файлы начального запуска. Если любой из этих файлов существует, но не может быть прочитан, bash выдает сообщение об ошибке. Символы тильды (~) в именах файлов заменяются так, как описано в подразделе "Замена тильды" раздела "ЗАМЕНЫ".
При вызове bash как интерактивного начального командного интерпретатора, или как неинтерактивного интерпретатора с опцией --login, он сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла, он последовательно ищет файлы ~/.bash_profile, ~/.bash_login и ~/.profile, читает и выполняет команды из первого же из них, который существует и доступен на чтение. Опция --noprofile может использоваться при запуске командного интерпретатора, чтобы отменить это действие.
При завершении работы в качестве начального командного интерпретатора bash читает и выполняет команды в файле ~/.bash_logout, если он существует.
При запуске интерактивного командного интерпретатора, не являющегося начальным, bash читает и выполняет команды из файла ~/.bashrc, если он существует. Это действие можно отменить с помощью опции --norc. Опция --rcfile файл заставляет bash читать и выполнять команды из указанного файла вместо ~/.bashrc.
При неинтерактивном запуске bash, например, для выполнения сценария, командный интерпретатор ищет в среде переменную BASH_ENV, получает ее значение и использует его в качестве имени файла, который необходимо прочитать и выполнить. bash ведет себя так, как если бы была выполнена следующая команда:
но при поиске имени файла не используется значение переменной PATH.
Если bash вызван с именем sh, он пытается, наколько это возможно, имитировать поведение при запуске старых версий интерпретатора sh, соответствуя при этом стандарту POSIX. При вызове в качестве интерактивного начального командного интерпретатора или неинтерактивного, но с опцией --login, он сначала пытается читать и выполнять команды последовательно из файлов /etc/profile и ~/.profile. Для отмены этого действия можно использовать опцию --noprofile. При вызове в качестве интерактивного командного интерпретатора с именем sh, bash ищет переменную среды ENV, получает ее значение, если оно задано, и использует это значение в качестве имени файла, который необходимо прочитать и выполнить. Поскольку интерпретатор, вызванный как sh, не пытается читать и выполнять команды в других файлах начального запуска, опция --rcfile не действует. Неинтерактивный командый интерпреатор, вызванный с именем sh, не пытается читать и выполнять никакие файлы начального запуска. При вызове по имени sh, командный интерпретатор bash входит в режим posix после прочтения файлов начального запуска.
При запуске bash в режиме posix, например, с помощью опции командной строки --posix, он следует стандарту POSIX при работе с файлами начального запуска. В этом режиме интерактивные командные интерпретаторы берут значение переменной среды ENV, читают и выполняют команды из соответствующего файла. Никакие другие файлы начального запуска не читаются.
Командный интерпретатор bash пытается определить, не запущен ли он демоном удаленного командного интерпретатора, обычно, rshd. Если оказывается, что bash запущен демоном rshd, он читает и выполняет команды из файла ~/.bashrc, если этот файл существует и доступен на чтение. Командный интерпретатор bash так не делает, если запущен как sh. Для отмены этого действия можно использовать опцию --norc, а с помощью опции --rcfile можно заставить читать другой файл, но обычно демон rshd не задает эти опции командному интерпретатору и не позволяет их указать.
Если командный интерпретатор запущен с эффективным идентификатором пользователя (группы), не совпадающим с реальным идентфикатором пользователя (группы), и не указана опция -p, файлы начального запуска не читаются, функции командного интерпретатора не наследуются из среды, переменная SHELLOPTS, если она задана в среде, игнорируется, а эффективный идентификатор пользователя устанавливается равным реальному. Если при вызове задана опция -p, файлы начального запуска тоже не читаются, но эффективный идентификатор пользователя не сбрасывается.
В оставшейся части документа используются следующие термины.
Copyright 2002 В. Кравчук, OpenXS Initiative, перевод на русский язык
man pkgadd(1M) по UnixWare 2.03. Выпуск ожидается в понедельник, 8 апреля.
С наилучшими пожеланиями,
В.К.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||