Интерпретаторы можно запускать не только в режиме командной строки, но также и из скрипта. Также можно изменить вид приглашения (символ «%»).
Если создать файл скрипта (этот и следующий примеры даны для интерпретатора tclsh, для wish надо заменить в строках имя tclsh на wish) с первой строкой вида
#! /usr/local/bin/tclsh
и пометить файл скрипта, как исполняемый, то будет можно запускать интерпретатор прямо из оболочки Unix. В этом случае предполагается, что интерпретатор (tclsh, wish) был установлен в стандартный каталог usr/local/bin; если он был установлен в какое-нибудь иное место, то надо будет откорректировать путь в названной выше строке. При этом эта строка должна удовлетворять возможным требованиями операционной системы Unix на длину строк, начинающихся с
#! (не более 30 символов).
Еще удобнее будет начинать файлы со скриптами следующими тремя строками:
#!/bin/sh
# the next line restarts using tclsh\
exec tclsh "$0" "$@"
Этот второй способ имеет три преимущества перед предыдущим способом:
- местонахождение исполняемого файла интерпретатора не нужно прописывать в скрипте: исполняемый файл может находиться в любом месте в пределах пути поиска оболочки пользователя;
- нет необходимости учитывать ограничение на длину строк;
- этот способ будет работать даже тогда, когда файл tclsh или wish сам является скриптом оболочки (иногда так поступают для того, чтобы иметь возможность работать с несколькими архитектурами или операционными системами: скрипт tclsh (wish) выберет для запуска один из нескольких исполняемых файлов).
Эти три строчки позволяют обрабатывать скрипт и оболочке sh, и интерпретатору (tclsh или wish), но при этом exec будет запущен только оболочкой sh. Сначала скрипт обрабатывает sh, она считает вторую строку комментарием и исполняет третью строку. Утверждение с
exec остановит обработку оболочкой и вместо этого запустит интерпретатор для повторной обработки всего скрипта.
Когда интерпретатор запустится, он сочтет все три строки комментариями, потому что обратный слеш в конце второй строки означает для него, что третья строка есть продолжение комментария на второй строке.
Изменить символ приглашения можно при помощи переменных
tcl_prompt1 и
tcl_prompt2. Если переменная
tcl_prompt1 существует, то она должна содержать скрипт Tcl для вывода приглашения; вместо вывода своего приглашения, интерпретатор будет исполнять скрипт в
tcl_prompt1. Переменная
tcl_prompt2 используется аналогичным образом, когда при вводе была начата новая строка, но вводимая команда еще не была закончена. Если переменная
tcl_prompt2 не была задана, то для незаконченных команд не будет выводиться никакого приглашения.