При закрытии подписчики были переданы в рассылку "Интернет: маркетинг, реклама, торговля" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Уважаемые подписчики!
Это восьмой, последний выпуск из серии, посвященной командному
интерпретатору ksh. Перевод закончен. Мне осталось
перечитать его, проверить перекрестные ссылки и сделать содержание. Его,
кстати, как и ссылку на полный текст перевода, я опубликую в
следующем выпуске.
Понятно, что толку - ноль, но напишу еще раз...
Если кто-то очень хочет послушать "живьем" что-нибудь
по тематике моих рассылок (UNIX, Oracle, Informix) - напишите
мне.
Я готов проводить полуторачасовые семинары в Киеве в любой аудитории
в любой день недели (это пока, до конца марта - потом могут появиться
ограничения). Если мне покажется интересной тема, я с удовольствием
выступлю в Киеве бесплатно. Если будет что сказать и показать, конечно...
Предложения от жителей областных центров Украины и ближайшего зарубежья
тоже принимаются.
Если командный интерпретатор вызван с помощью exec(2) и первый символ нулевого аргумента ($0) представляет собой -, то предполагается, что это начальный командный интерпретатор, и команды читаются из файла /etc/profile и либо из файла .profile в текущем каталоге, либо из $HOME/.profile, если хоть один из них существует. Затем команды читаются из файла, имя которого задается переменной среды ENV, если он существует. Если флаг -s не указан, но есть аргументы, то выполняется поиск по путям для первого аргумента, чтобы определить имя сценария для выполнения. Указанный в виде аргумента сценарий должен быть доступен для чтения, а любые установки битов setuid и setgid игнорируются. Если сценарий не найден по путям, аргумент обрабатывается так, как если бы он задавал имя встроенной команды или функции. Затем команды читаются так, как описано ниже. При вызове командным интерпретатором обрабатываются следующие флаги:
Остальные флаги и аргументы представлены ранее, в описании команды set.
rksh используется для настройки регистрационных имен и сред выполнения, возможности которых строже контролируются, чем при использовании стандартного командного интерпретатора. Действия rksh идентичны ksh, за исключением того, что следующие действия не разрешены:
Перечисленные выше ограничения вступают в силу после интерпретации файлов .profile и ENV.
Когда надо выполнить команду, являющуюся процедурой командного интерпретатора, rksh вызывает ksh для ее выполнения. Таким образом, можно создавать для конечного пользователя процедуры, использующие все возможности стандартного командного интерпретатора, но ограничить ему выбор команд; эта схема предполагает, что конечный пользователь не имеет прав на запись и выполнение в том же каталоге.
Общий эффект этих правил состоит в том, что создатель файла .profile имеет полный контроль над действиями пользователя, выполняя гарантированные действия по настройке и оставляя пользователя в соответствующем каталоге (вероятно, не в начальном).
Системный администратор часто создает каталог с командами (т.е., /usr/rbin), которые можно затем безопасно вызывать в rksh.
Ошибки, выявленные командным интерпретатором, например, синтаксические, вызывают возврат командным интерпретатором ненулевого статуса выхода. В противном случае, командный интерпретатор возвращает статус выхода последней выполненной команды (см. также описание команды exit выше). Если командный интерпретатор используется не интерактивно, то выполнение файла интерпретатора не контролируется. При выявлении ошибок времени выполнения, командный интерпретатор выдает имя команды или функции, а также причину ошибки. Если номер строки, в которой произошла ошибка, больше единицы, то выдается также номер строки в квадратных скобках ([]) после имени команды или функции.
Для неинтерактивного командного интерпретатора, ошибка, возникшая в специальной встроенной команде или в утилите другого типа, вызовет выдачу командным интерпретатором диагностического сообщения в стандартный поток ошибок и завершение работы, как показано в следующей таблице:
Ошибка | Специальная встроенная команда | Другие утилиты |
Синтаксическая ошибка с точки зрения языка командного интерпретатора | работа завершается | работа завершается |
Синтаксическая ошибка с точки зрения утилиты (ошибка в опции или операнде) | работа завершается | работа не завершается |
Ошибка перенаправления | работа завершается | работа не завершается |
Ошибка при присвоении переменной | работа завершается | работа не завершается |
Ошибка подстановки | работа завершается | работа завершается |
Команда не найдена | не бывает | работа может завершиться |
Сценарий, вызываемый через точку, не найден | работа завершается | не бывает |
Ошибка подстановки возникает при выполнении подстановок командным интерпретатором (например, ${x!y}, поскольку ! - недопустимый оператор); реализация может считать их синтаксическими ошибками, если сможет выявить их при разбиении команды на лексемы, а не при выполнении подстановок.
Если любая из ошибок, для которой в таблице указано "работа завершается (может завершиться", происходит в порожденном командном интерпретаторе, порожденный командный интерпретатор завершает (может завершить) работу с ненулевым статусом, но сценарий, из которого он порожден, не закончит работу из-за этой ошибки.
Во всех представленных в таблице случаях, интерактивный командный интерпретатор будет выдавать диагностическое сообщение в стандартный поток ошибок без завершения работы.
Описание поведения ksh и rksh при работе с файлами, большими или равными 2 Гбайтам (2**31 байтам), см. на странице справочного руководства largefile(5).
Каждая команда имеет статус выхода, который может влиять на поведение других команд. Статус выхода команд, не являющихся внешними утилитами, описан в этом разделе. Статус выхода стандартных утилит описан в соответствующих им разделах.
Если команда не найдена, статус выхода будет равен 127. Если файл, соответствующий имени команды, найден, но он не является выполняемой утилитой, статус выхода будет равен 126. Приложения, вызывающие утилиты без использования командного интерпретатора, должны использовать эти значения статуса выхода для сообщения об аналогичных ошибках.
Если в команде возникает ошибка при разбиении на слова или перенаправлении, ее статус выхода будет больше нуля.
При выдаче статуса выхода через специальный параметр ? командный интерпретатор будет выдавать все имеющиеся восемь битов статуса выхода. Статус выхода команды, прекратившей работу из-за получения сигнала, будет иметь значение больше 128.
Описание следующих атрибутов см. на странице справочного руководства attributes(5):
ТИП АТРИБУТА | ЗНАЧЕНИЕ АТРИБУТА |
Доступен в пакете | SUNWcsu |
CSI | Включено |
ТИП АТРИБУТА | ЗНАЧЕНИЕ АТРИБУТА |
Доступен в пакете | SUNWxcu4 |
CSI | Включено |
Использование сценариев командного интерпретатора с установленным битом setuid настоятельно не рекомендуется.
Если выполняется команда, представляющая собой отслеживаемый псевдоним, а затем команда с тем же именем устанавливается в каталог, находящийся в пути поиска перед каталогом, в котором находилась исходная команда, командный интерпретатор будет продолжать выполнять исходную команду. Используйте опцию -t команды alias для исправления этой ситуации.
Некоторые очень старые сценарии командного интерпретатора содержат ^ как синоним символа конвейера, |.
Использование встроенной команды fc в составной команде приведет к исчезновению всей команды из файла истории.
Встроенная команда . файл читает весь файл до выполнения любых команд. Поэтому команды alias и unalias в файле не будут применяться к функциям, определенным в файле.
Когда командный интерпретатор выполняет сценарий, пытающийся вызвать несуществующий командный интерпретатор, выдается ошибочное диагностическое сообщение о том, что файл сценария не существует.
Последнее изменение: 26 февраля 1999 года
Copyleft (no c) 2005 В. Кравчук, OpenXS Initiative, перевод на русский язык
Содержание, терминология и прочие комментарии относительно представленного перевода страницы справочного руководства ksh(1). Далее по плану долгой и счастливой жизни рассылки - перевод man smb.conf(5).
С наилучшими пожеланиями,
В.К.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.othos.unixman |
Отписаться |
В избранное | ||