<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>unknown</title>
  </head>
  <body>
    <h1>unknown</h1>

    <p>Команда <strong>unknown</strong> обрабатывает попытки обратиться к
      несуществующей команде.</p>

    <h2>СИНТАКСИС</h2> 

    <pre>
      <strong>unknown</strong> <em>cmdName</em> ?<em>arg</em> <em>arg</em>?
    </pre>

    <h2>ОПИСАНИЕ</h2> 

    <p>Интерпретатор Tcl выполняет эту команду каждый раз, когда
      скрипт пытается обратиться к несуществующей команде. Исходный
      вариант <strong>unknown</strong> не является функцией ядра Tcl;
      напротив, это библиотечная процедура, определяемая по
      умолчанию при запуске Tcl. Разработчик может переопределить
      ее функциональность так, как ему нужно.</p>

    <p>Когда Tcl находит имя команды, которому не соответствует ни
      одной из существующих команд, тогда он проверяет наличие команды
      <strong>unknown</strong>. Если команды <strong>unknown</strong> нет, то он
      возвращает ошибку. Если такая команда обнаружена, то она будет
      вызвана с аргументами, состоящими из имени и аргументов исходной
      несуществующей команды, в которых выполнены все необходимые
      подстановки.</p>

    <p>Команда <strong>unknown</strong> обычно выполняет поиск по библиотечным
      каталогам процедуры с именем <em>cmdName</em>, или поиск полного
      имени команды, к которой обратились по сокращенному имени, или
      автоматический запуск неизвестной команды как подпроцесса. При
      успешном поиске полного имени команды команда <strong>unknown</strong>
      заменяет имя на полное и вызывает команду с полным
      именем. Результат работы команды <strong>unknown</strong> используется
      вместо результата неопределенной команды.</p>

    <p>Создаваемая по умолчанию процедура <strong>unknown</strong> выполняет
      следующие действия.</p>

    <p>Сначала она вызывает библиотечную процедуру <strong>auto_load</strong>
      чтобы найти и загрузить соответствующую процедуру. Если это
      удалось, то выполняется исходная команда с ее исходными
      аргументами.</p>

    <p>В противном случае вызывается процедура <strong>auto_execok</strong>
      чтобы найти исполняемый файл с именем <em>cmdName</em>. Если файл
      удалось найти, выполняется команда <a href=
      "exec.html"><strong>exec</strong></a> с именем команды и ее
      аргументами в качестве аргументов.</p>

    <p>В противном случае проверяется, была ли неизвестная команда
      вызвана на самом верхнем уровне вне какого-либо скрипта. Если
      это было так, процедура <strong>unknown</strong> выполняет следующие
      дополнительные действия: проверяется не имеет ли команда одну из
      следующих форм:<strong>!!</strong>, <strong>!</strong>event, или
      <strong>^</strong>old<strong>^</strong>new?<strong>^</strong>? и если да, то процедура
      unknown выполняет для них подстановки по тем же правилам, что и
      csh.</p>

    <p>И при неудаче всех предыдущих попыток процедура <strong>unknown</strong>
      проверяет, не является ли <em>cmdName</em> сокращением для
      известной Tcl процедуры. Если так, то <em>cmdName</em> заменяется
      на полное имя процедуры и она вызывается с исходными
      аргументами.</p>

    <p>Если же ни одна из попыток не привела к успеху, процедура
      возвращает ошибку.</p>

    <p>Если определена глобальная переменная <strong>auto_noload</strong>,
      попытка загрузить процедуру с помощью <strong>auto_load</strong> не
      производится.</p>

    <p>Если определена глобальная переменная <strong>auto_noexec</strong>,
      попытка загрузить процедуру с помощью <strong>auto_execok</strong> не
      производится.</p>

    <p>Если команду удалось найти, то процедура <strong>unknown</strong>
      возвращает результат выполнения найденной команды.</p>
  </body>
</html>