コンテンツにスキップ
manual/ ja

COMMAND REFERENCE / 日本語訳

tclsh(1)

Apple / macos 26.6.2SECTION 1
版情報
バリエーション
25g83
原文形式
roff
原文 SHA-256
198e1ed330b79b5958d96ecff53816fcbda3fa617b644d1fbd22322c0cec6786
翻訳
LLM による日本語訳

tclsh - Tcl インタプリタを内蔵したシンプルなシェル

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

Tclsh は、標準入力またはファイルから Tcl コマンドを読み取って評価する、シェルに似たアプリケーションです。引数なしで起動すると対話的に動作し、標準入力から Tcl コマンドを読み取り、コマンドの結果とエラーメッセージを標準出力に出力します。exit コマンドが呼び出されるか、標準入力のファイル終端に達するまで動作します。ユーザーのホームディレクトリに .tclshrc(Windows プラットフォームでは tclshrc.tcl)というファイルが存在する場合、対話モードの tclsh は、標準入力から最初のコマンドを読み取る直前に、そのファイルを Tcl スクリプトとして評価します。

tclsh を引数付きで起動すると、最初の数個の引数でスクリプトファイルの名前と、必要に応じてそのスクリプトファイルに格納されているテキストデータのエンコーディングを指定します。それ以降の引数は変数としてスクリプトから利用できます(後述)。tclsh は標準入力からコマンドを読み取る代わりに、指定されたファイルから Tcl コマンドを読み取り、ファイルの終端に達すると tclsh は終了します。ファイルの終端は、媒体の物理的な終端、または文字「\032」(「\u001a」、control-Z)のいずれかで示すことができます。この文字がファイル内に存在する場合、tclsh アプリケーションはその文字の直前までのテキストを読み取りますが、その文字自体は読み取りません。この文字をファイル内で必要とするアプリケーションでは、「\032」、「\x1a」、または「\u001a」として安全にエンコードするか、format や binary などのコマンドを使って生成できます。tclsh のコマンドラインでスクリプトファイル名を指定した場合、.tclshrc は自動的には評価されませんが、必要であればスクリプトファイルからいつでも source できます。

先頭行が次のようになっているファイルに Tcl スクリプトを作成すると、

#!/usr/bin/tclsh

そのファイルを実行可能に設定することで、シェルからスクリプトファイルを直接起動できます。これは tclsh が既定の場所である /usr/bin にインストールされていることを前提としています。別の場所にインストールされている場合は、上記の行をその場所に合わせて変更する必要があります。多くの UNIX システムでは #! 行の長さを約 30 文字より長くできないため、tclsh 実行ファイルへ短いファイル名でアクセスできるようにしてください。

さらに優れた方法は、スクリプトファイルを次の 3 行で始めることです。

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

この方法には、前の段落の方法に比べて 3 つの利点があります。第 1 に、tclsh バイナリの場所をスクリプトに固定して記述する必要がなく、シェルの検索パス内のどこに置くこともできます。第 2 に、前の方法にあった 30 文字のファイル名制限を回避できます。第 3 に、tclsh 自体がシェルスクリプトであっても、この方法は機能します(複数のアーキテクチャまたはオペレーティングシステムに対応するため、一部のシステムではこの構成が使われます。tclsh スクリプトが複数のバイナリから実行するものを 1 つ選択します)。この 3 行により、sh と tclsh の両方がスクリプトを処理しますが、exec を実行するのは sh だけです。最初に sh がスクリプトを処理し、第 2 行をコメントとして扱って第 3 行を実行します。exec 文によって、シェルは処理を停止し、代わりに tclsh を起動してスクリプト全体を再処理させます。tclsh が起動すると、第 2 行末尾のバックスラッシュによって第 3 行が第 2 行のコメントの一部として扱われるため、3 行すべてをコメントとして扱います。

tclsh の名前の一部にバージョン番号を含めてインストールすることも一般的です。この方法には、同じシステム上に複数のバージョンの Tcl を同時に共存させられるという利点がありますが、異なるバージョンの Tcl で一貫して起動できるスクリプトを記述しにくくなるという欠点もあります。

Tclsh は次の Tcl 変数を設定します。

argc

スクリプトファイル名を除く arg 引数の個数を保持します(引数がなければ 0)。

argv

各要素が arg 引数である Tcl リストを引数の順序どおりに保持します。arg 引数がなければ空文字列を保持します。

argv0

fileName が指定されている場合は、その値を保持します。それ以外の場合は、tclsh の起動に使われた名前を保持します。

tcl_interactive

tclsh が対話的に動作している場合(fileName が指定されておらず、標準入力が端末のようなデバイスである場合)は 1、それ以外の場合は 0 を保持します。

tclsh を対話的に起動すると、通常は各コマンドに対して「%」というプロンプトが表示されます。変数 tcl_prompt1 と tcl_prompt2 を設定することで、プロンプトを変更できます。変数 tcl_prompt1 が存在する場合、その内容はプロンプトを出力する Tcl スクリプトでなければなりません。tclsh はプロンプトを直接出力する代わりに、tcl_prompt1 内のスクリプトを評価します。改行が入力されたものの、現在のコマンドがまだ完結していない場合には、変数 tcl_prompt2 が同様に使用されます。tcl_prompt2 が設定されていない場合、不完全なコマンドに対してプロンプトは出力されません。

詳しい説明については Tcl_StandardChannels を参照してください。

encoding(n), fconfigure(n), tclvars(n)

引数、インタプリタ、プロンプト、スクリプトファイル、シェル