安全なTclは信用できないTclスクリプトを安全に実行するため、かつそのようなスクリプトの潜在的に危険的な機能への間接的なアクセスを提供するメカニズムです。Baseは信用できないTclスクリプトが、ホストアプリケーションを害せないことを保証します。Baseは完全性やプライバシー攻撃を防ぎます。信用できないTclスクリプトによるホストアプリケーションやコンピューターの状態を悪用することを妨げます。信用できないスクリプトからのホストコンピュータやホストアプリケーションに保存されている情報をいかなる方法での漏洩を妨げます。プリタを作成することを認めます。encodingそしてexitコマンドへの定義済みの別名セットを提供します。オートロードやパッケージメカニズムの利用も可能です。いかなるファイルシステム構造の知識も、安全なインタープリタには漏れません。トークンを含む仮想化されたパスにしかアクセスしないからです。安全なインタープリタがファイルをsourceすることを要求すると、sourceするファイル名の一部として仮想パスの中でトークンを使用します。マスタインタープリタは、そのトークンを実際のディレクトリ名にクリアに変換し、要求された操作を実行します(セキュリティ参照)。以下で言及するコマンドのオプションフラグを使うことで異なるセキュリティレベルが選択できます。ネームスペースに常駐します。コマンド以下のコマンドがマスタインタープリタで提供されます。OPTIONSセクションを参照します。引数が省略されると、名前は生成されます。::safe::interpCreateは常にインタープリタ名を返します。...?このコマンドは、安全なインタープリタを作成しないことを除いてinterpCreateと同じです。-safeのような他の方法で作成されていなければなりません。対する現在値のリストとして返します。含むリストを返します。対するそのオプションの現在値です。2つ以上の引数が提供されたら、これは安全なインタープリタを再構成し、提供された各オプションのみを変更します。スクリプトが指定されていると、インタープリタが削除される前に追加的な引数としてのインタープリタ名とともに評価されます。トークンを見つけて返します。ディレクトリが見つからないとエラーが生成されます。このマスタ内の安全なインタープリタのために維持されている仮想パスに追加します。安全なインタープリタで、そのディレクトリのファイルへアクセスできるトークンを返します。ディレクトリが既に仮想パスに含まれていると、ディレクトリを仮想パスに再び追加することなく、トークンを返すだけです。...?本コマンドは、安全なインタープリタに興味のあるライフサイクルイベントが起こったときに、呼び出されるスクリプトをインストールします。引数なしで呼び出されると、現在インストールされているスクリプトを返します。1つの空文字列の引数で呼び出されると、現在のインストールされているスクリプトは削除され、ログの記録は停止されます。スクリプトは追加的な引数、興味のあるイベントを記述する文字列で呼び出されます。デバッグを助けることです。この機能を使うと、安全なインタープリタが基本的なエラーメッセージしか得られませんが、これで完全なエラーメッセージを得ることができます。これは安全なインタープリタが、失敗や他の実ディレクトリ名のような敏感な情報を含んでいるイベントに関するメッセージを見ることを防止します。stderr以下は安全なインタープリタが、その仮想アクセスパス内に見つからないファイルをsourceしようとするサンプルセッションの出力です。イルが見つからなかったことを示すエラーメッセージだけを受け取ることにご注目ください。directoryオプション以下のオプションは::safe::interpCreate、::safe::interpInit、そして::safe::interpConfigureに共用されます。あらゆるオプション名は、混乱にならない限り、短縮できます。loadできるディレクトリのリストを設定します。同じディレクトリを使います。仮想パス、トークンとアクセス制御の詳細はセキュリティを参照してください。Tkのように)ロードすることを認められるかどうかを明示します。デフォルト値はtrueで、安全なインタープリタは静的にリンクされたパッケージをロードすることを許可されることを意味します。falseの便利的な短縮です。従って、安全なインタープリタは静的にリンクされたパッケージをロードすることを許可されないことを意味します。booleanこのオプションは、安全なインタープリタがパッケージを自分のサブインタープリタにロードすることを許されるかどうかを明示します。安全なインタープリタがパッケージを自分のサブインタープリタにロードすることを許可されないことを意味します。従って、安全なインタープリタがパッケージを自分のサブインタープリタにロードすることを許可することを意味します。与えられと、マスタで追加的な引数としての安全なインタープリタ名とともに、安全なインタープリタが削除される直前に評価されます。空の値が与えられると、安全なインタープリタのあらゆる現在インストールされている削除フックスクリプトが、削除されます。)は、あらゆる削除コールバックを提供しないことを意味します。以下の別名が安全なインタープリタに提供されます。fileName要求されたファイル及びTclのソースファイルは見つかれば、安全なインタープリタにsourceされます。source別名は安全なインタープリタの仮想パス内のディレクトリからのみファイルをsourceできます。指示するために、安全なインタープリタにその仮想パス内のトークン名の1つを使用することを要求します。正当なファイル名に対する制限についてはセキュリティを参照してください。fileName要求されたファイル及び共有オブジェクトファイルは見つかれば、動的に安全なインタープリタにロードされます。ファイル名は、うまく見つかるように安全なインタープリタの仮想パスで言及されるトークン名を含んでいなければなりません。その上、共有オブジェクトファイルは安全なエントリポイントを含んでいなければなりません。(loadで詳解しています。...?file別名はfileコマンドのサブコマンドの安全なサブセットへのアクセスを提供します。これらについてはfileを参照してください。encodingコマンドのサブコマンドの安全なサブセットへのアクセスを提供します。これはシステムエンコーディングの設定を許可しませんが、systemを含む全ての他のサブコマンドが現在のエンコーディングをチェックすることを可能にします。exit呼び出しインタープリタは削除され、その処理は停止するが、このインタープリタが存在していたTclプロセスは終了しません。Baseは悪戯や禁断なサービス攻撃を完全に防止することを望みません。これらの攻撃の形はアプリケーションやユーザーが一時的に有用な作業を行うためにコンピューターを使用することを妨げます。すべての利用可能なCPUタイムやスクリーンを消費します。Baseが防止している完全性やプライバシ攻撃よりは、一般的で重要ではないと考えられます。安全なサブセットへの間接的な別名です。パッケージをロードすることも要求できます。これらのコマンドのいくつかがローカルファイルシステムにアクセスするので、そのディレクトリ構造に関する情報の漏れの可能性があります。これを防止するため、安全なインタープリタで引数としてファイル名をとるコマンドは実ディレクトリ名の代わりにトークンを用います。これらのトークンは、例えばマスタインタープリタによって仲介されるファイルのソースの要求のとき、実ディレクトリ名に翻訳されます。よって初期化された各安全なインタープリタに対して、この仮想パスシステムはマスタインタープリタに維持され、パスは安全なインタープリタのアクセス可能なトークンをローカルファイルシステム上の実パス名前にマップします。従って、安全なインタープリタが、それを実行しているホストのファイルシステムの構造に関する情報を得ることを防止します。)のようなフォーマットのパスです。アクセスが不可)にある1つのファイルです。ソースかロードされるファイルはファイルシステムに位置する実のパス名に変換されます。安全なインタープリタは、そのファイルがファイルシステムに格納される実際のパス名に関する知識を決して得られません。安全なインタープリタによるsource可能なファイルのセットに、偶然に含まれてしまった敏感なファイルからの潜在的な情報の漏洩を更に防止するために、source別名は以下の条件を満たすファイルへのアクセスを制限します。ファイル名が14文字以下であり、ただ1つのドットを含み、拡張子.tclを持つまたはtclIndexと呼ばれます。最初のアクセスパスリストの各要素は、スレーブのauto_pathに設定されるトークンを割り当てられて、そのリストの1番目の要素はそのスレーブのtcl_libraryとして設定されます。アクセスパス引数が与えられていない場合、あるいは空リストであると、デフォルトの動作はスレーブにそのマスタがアクセスできるのと同じパッケージにアクセスさせることになります。定義によって、それがスレーブインタプリンタで実行するので危険の可能性がない)とC拡張で書かれたパッケージのみです。そのため、マスタのauto_pathはスレーブアクセスパスを構成するために使われます。置に追加されるか、移動されます。従って、スレーブtcl_libraryはマスタのと同じです。その実のパスがまだスレーブには見えません。含まれなければ)追加されます。-accessPathフラグでディレクトリリストを明示的に指定することでサブディレクトリが決して検索されないように、より制限されたパスを指定することができます。通じで)されるとき、auto_resetは、そのauto_indexを新しいトークンリストと同期させるため、安全なインタープリタにおいて自動的に評価されます。