## Tcl9.0.3/Tk9.0.3 Documentation > Tcl/Tk Applications > tclsh

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    tclsh — Tcl 解釈実行機能を含む対話型指示機能　　　Simple shell containing Tcl interpreter
  構文 SYNOPSIS
  説明 DESCRIPTION
  記述譜ファイル　SCRIPT FILES
  諸変数　VARIABLES
    argc
    argv
    argv0
    tcl_interactive
  催促符号　　PROMPTS
  標準通信路　　STANDARD CHANNELS
  ZIPFS VIRTUAL FILE SYSTEM
  SEE ALSO
  KEYWORDS

### NAME

tclsh — Tcl 解釈実行機能を含む対話型指示機能　　　Simple shell containing Tcl interpreter

### 構文 SYNOPSIS

tclsh ?-encoding name? ?fileName arg arg ...?

### 説明 DESCRIPTION

Tclsh は対話型指示機能で､Tcl命令を標準入力又はファイルから読み評価する｡もし引数なしで起動されると､対話型になり､標準入力からTcl 命令を読み､命令の結果や不都合伝達文を印刷する｡ exit 命令が起動されるか､標準入力のファイル末尾に至るかする迄実行が続く｡もし､使用者の我が家ディレクトリーに .tclshrc (又は､Windowsではtclshrc.tcl)というファイルが存在すると､対話型 tclsh は､標準入力からの最初の命令に先立ち､それをTcl 記述譜として評価する｡ Tclsh is a shell-like application that reads Tcl commands from its standard input or from a file and evaluates them. If invoked with no arguments then it runs interactively, reading Tcl commands from standard input and printing command results and error messages to standard output. It runs until the exit command is invoked or until it reaches end-of-file on its standard input. If there exists a file .tclshrc (or tclshrc.tcl on the Windows platforms) in the home directory of the user, interactive tclsh evaluates the file as a Tcl script just before reading the first command from standard input.

### 記述譜ファイル　SCRIPT FILES

もし tclsh が引数と共に起動されると､最初の幾つかの引数は､記述譜ファイルの名前と､更にはその記述譜ファイルが保存されている文書データの文字符号を指定する｡ 追加的引数はどれも変数として記述譜に利用できるようにされる(下を参照のこと)｡ 標準入力から命令を読む代りに､ tclsh はその名前の付いたファイルから Tcl 命令を読込む; tclsh はファイル末尾に到達すると終了する｡ ファイル末尾は､媒体の物理的末尾か文字 (“\x1A”, control-Z). のどちらかで印付けされる｡ もし､この文字がファイルに現れると､ tclsh 応用譜は文書をそこ迄読むが､その文字は含まない｡ この文字がファイル内に必要とされる応用譜は､安全に “\x1A”; として符号化するか､format や binary の様な命令を使用して生成すれば良い｡ tclsh 命令行上に記述譜ファイルの名前が存在すると､ .tclshrc の自動評価はなくなるが､行いたい場合には､何時でも記述譜に source 命令を使うことができる｡　　　　　　　 If tclsh is invoked with arguments then the first few arguments specify the name of a script file, and, optionally, the encoding of the text data stored in that script file. Any additional arguments are made available to the script as variables (see below). Instead of reading commands from standard input tclsh will read Tcl commands from the named file; tclsh will exit when it reaches the end of the file. The end of the file may be marked either by the physical end of the medium, or by the character, (“\x1A”, control-Z). If this character is present in the file, the tclsh application will read text up to but not including the character. An application that requires this character in the file may safely encode it as “\x1A”; or may generate it by use of commands such as format or binary. There is no automatic evaluation of .tclshrc when the name of a script file is presented on the tclsh command line, but the script file can always source it if desired.

その第１行が次の様なTcl 記述譜のファイルを作成すると　　　　　 If you create a Tcl script in a file whose first line is

    #!/usr/local/bin/tclsh

そのファイルに実行可能の印が付けてあれば､対話指示機能の入力行からその記述譜を直接実行できる｡これには tclsh が無為設定の場所 /usr/local/bin の中に搭載されていることを仮定しており; もし､何処か違う場所に搭載していると､上述の行をそれに合致するよう修正しておく必要がある｡多くの UNIX 系では #! の行は長さが30文字を超えることを許容していない､そこで､ tclsh が呼出して実行できるような短いフィル名であることを確認しておかれたい｡　　　　　　 then you can invoke the script file directly from your shell if you mark the file as executable. This assumes that tclsh has been installed in the default location in /usr/local/bin; if it is installed somewhere else then you will have to modify the above line to match. Many UNIX systems do not allow the #! line to exceed about 30 characters in length, so be sure that the tclsh executable can be accessed with a short file name.

更に良いやり方は､貴兄の記述譜ファイルを次の３行から始めることである:　　　　　 An even better approach is to start your script files with the following three lines:

    #!/bin/sh
    # the next line restarts using tclsh \
    exec tclsh "$0" ${1+"$@"}

この方法は前の段落の方法よりも３つの利点がある｡ 第１､tclsh ２進譜の場所が記述譜内に緊密に繋びつかない: シェルが捜索する経路なら何処にあっていもよい｡ 第２､最初の方法のファイル名30語の限界を避けられる｡ 第３､この方法は､縦え tclsh そのものがシェル記述譜であってもうまく動く(ある種の系では､複数の装置構造やOSを取扱う為に､この方法で運用されている: 実行の為に tclsh 記述譜は､幾つかの２進譜の内の一つを選択する)｡ あの３行により sh と tclsh の両方が記述譜を処理することになるが､exec は sh によってのみ実行される｡ 最初にsh が記述譜を処理する; それは､第２行を注釈として扱い､第３行を処理する｡ exec の命令文はシェルに実行を停止させ､その代わりに､ tclsh に全体の記述譜を処理させる｡ tclsh が開始される時は､三つの行全部が注釈行として扱われる､理由は､第２行末尾の逆斜線が第３行を第２行の注釈行の一部分として取扱わせるから｡　　　　　　　 This approach has three advantages over the approach in the previous paragraph. First, the location of the tclsh binary does not have to be hard-wired into the script: it can be anywhere in your shell search path. Second, it gets around the 30-character file name limit in the previous approach. Third, this approach will work even if tclsh is itself a shell script (this is done on some systems in order to handle multiple architectures or operating systems: the tclsh script selects one of several binaries to run). The three lines cause both sh and tclsh to process the script, but the exec is only executed by sh. sh processes the script first; it treats the second line as a comment and executes the third line. The exec statement cause the shell to stop processing and instead to start up tclsh to reprocess the entire script. When tclsh starts up, it treats all three lines as comments, since the backslash at the end of the second line causes the third line to be treated as part of the comment on the second line.

註意すべきは､ tclsh に版番号を名前の一部として添えて一緒に搭載するのが通常の慣習である｡ これは Tcl の複数の版を同じ系に存在させる事を許容する利点を有するが､ Tcl の異なる版に跨った中から一つを開始させる記述譜を書くことを難しくするとの不利もある｡　　　　　　 You should note that it is also common practice to install tclsh with its version number as part of the name. This has the advantage of allowing multiple versions of Tcl to exist on the same system at once, but also the disadvantage of making it harder to write scripts that start up uniformly across different versions of Tcl.

代りに､使用者は､経路上に tclshを置く為に /usr/bin/env を使う事ができる､この様に: Alternatively, you can use /usr/bin/env to locate tclsh on the path, like this:

    #!/usr/bin/env tclsh

これは簡潔さと単純さの長所を有すが､ 二進数に関する多様な名前に直面した時の柔軟性に難がある｡ That has the advantages of being succinct and simple, but the disadvantage of not being flexible in the face of varying names for the binary.

### 諸変数　VARIABLES

Tclsh は Tcl 外部函数自身によって(Tcl内に PATH の様な環境変数を対応させる env の如く)生成されたものに追加して次の大域 Tcl 変数を設定する｡ Tclsh sets the following global Tcl variables in addition to those created by the Tcl library itself (such as env, which maps environment variables such as PATH into Tcl):

argc
  arg 引数の個数を含む(なしの場合は 0 )､記述譜ファイルの名前は含まない｡ 　　　　　　　 Contains a count of the number of arg arguments (0 if none), not including the name of the script file.

argv
  その要素が､arg 引数を､そのままの順とした Tcl リストか､arg 引数がない場合は空文字列､を含む｡　　　　　　　 Contains a Tcl list whose elements are the arg arguments, in order, or an empty string if there are no arg arguments.

argv0
  指定されている場合は fileName を含む｡そうでない場合､ tclsh が起動されたものの名前を含む｡　　　　 Contains fileName if it was specified. Otherwise, contains the name by which tclsh was invoked.

tcl_interactive
  もし tclsh が対話的に実行されている場合(fileName が指定されず､且つ､標準入力が端末の様な装置である)は 1 ､それ以外は 0 を含む｡　　　　　 Contains 1 if tclsh is running interactively (no fileName was specified and standard input is a terminal-like device), 0 otherwise.

### 催促符号　　PROMPTS

tclsh は対話的に起動されていると､通常はそれぞれの命令の為に “% ” で催促する｡催促符号は､大域変数 tcl_prompt1 や tcl_prompt2 を設定することにより変更できる｡ 変数 tcl_prompt1 が実在する場合､それは催促符号を出力する為の Tcl 記述譜を構成していなければならない; tclsh は催促符号を出力する代りに､tcl_prompt1 の中の記述譜を評価する｡変数 tcl_prompt2 も､改行が打鍵されたが､現在の命令が未だ完了していない時に､同じ様な方法に使用される; もし tcl_prompt2 が設定されていない場合､完了していない命令の為には催促符号は何も出力されない｡ 　　　　　　 When tclsh is invoked interactively it normally prompts for each command with “% ”. You can change the prompt by setting the global variables tcl_prompt1 and tcl_prompt2. If variable tcl_prompt1 exists then it must consist of a Tcl script to output a prompt; instead of outputting a prompt tclsh will evaluate the script in tcl_prompt1. The variable tcl_prompt2 is used in a similar way when a newline is typed but the current command is not yet complete; if tcl_prompt2 is not set then no prompt is output for incomplete commands.

### 標準通信路　　STANDARD CHANNELS

更なる説明は Tcl_StandardChannels を参照されたい｡　　　　　　 See Tcl_StandardChannels for more explanations.

### ZIPFS VIRTUAL FILE SYSTEM

zipfile が tclsh の末尾に連結されているとき､開始時に､zip 書庫の内容が仮想ファイル体系 (VFS) として認識される｡ そのVFSの根本は､zipfs root命令を使って取出せる｡ zip書庫は､VFS内部のappディレクトリーの下に据付けられる｡ もし､main.tclと名付けられたファイルが､ zip書庫の頂水準のディレクトリー内に､あると､ tclshの通常の命令行処理の代りに､ それが原資になる｡ もし､頂水準ディレクトリーtcl_libraryが､zip書庫内に､存在すると､ それは､env(TCL_LIBRARY)として積込まれたディレクトリーになる｡ もし､main.tclと名付けられたファイルが､zip書庫の頂水準内に存在すると､ 殻の通常の命令行取扱いの代りに､そちらが原資となる｡ When a zipfile is concatenated to the end of a tclsh, on startup the contents of the zip archive will be mounted under a virtual file system (VFS). The root of that VFS can be retrieved using the zipfs root command. The zip archive is mounted under the app directory within the VFS. If a file named main.tcl is present in the top level directory of the zip archive, it will be sourced instead of tclsh's normal command line handing. If a top level directory tcl_library is present in the zip archive, it will become the directory loaded as env(TCL_LIBRARY). If a file named main.tcl is present in the top level directory of the zip archive, it will be sourced instead of the shell's normal command line handling.

唯一個のzipファイルのみが実行可能な映像(tclsh, か wish)末尾に連結され得る｡ 但し､もし､複数のzipファイルが連結されると､最後の一つのみが使われる｡ このファイル系は読込みのみ可である｡ファイルは､この据付けられたファイル系内部では､追加や修正は不可能である｡完全な詳細はzipfsを参照されたい｡ Only one zipfile can be concatenated to the end of executable image (tclsh, or wish). However, if multiple zipfiles are concatenated, only the last one is used. This filesystem is read-only. Files cannot be added or modified within this mounted file system. See zipfs(n) for complete details.

### SEE ALSO

auto_path, encoding, env, fconfigure, zipfs

### KEYWORDS

application, argument, interpreter, prompt, script file, shell, zipfs
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.