unknown-実在しないコマンドを使おうと試みるときの処理をします。
unknown cmdName ?arg arg ...?
スクリプトが存在しないコマンドを呼び出そうとするときはTclインタープリタはこのコマンドを呼び出します。unknown
のデフォルトインプリメントはTclがインタープリタを初期化するときに定義されたライブラリプロシージャです。ユーザーがデフォルトunknown
をオーバーライドすることでその機能を変更できます。注意:安全なインタープリタにはデフォルトunknown
インプリメントがありません。
Tclインタープリタが定義されたコマンドでないコマンド名を発見した場合、Tclはunknown
コマンドが存在するかをチェックします。unknown
コマンドがない場合、インタープリタはエラーを返します。unknown
コマンドが存在すれば、実在しないオリジナルコマンドのコマンド名と引数一式をunknown
コマンド与えて実行します。unknown
コマンドの標準動作は、名前cmdNameでコマンドプロシージャが置かれるライブラリディレクトリを検索します。または実行中の省略形である未知のコマンド名をフルネームに拡張し、自動的にサブプロセスとしてコマンドを実行させようとします。unknown
はしばしば( 省略形を補充する等で )
僅かですが、オリジナルのコマンドを変形した後に再実行を試みます。
unknown
コマンドの結果は実在しないオリジナルコマンドの戻り値として返されます。
デフォルトインプリメントのunknown
は次のように動作します。 最初に auto_loadライブラリプロシージャを呼び出してコマンドをロードします。ロードが成功すればオリジナルの引数でオリジナルコマンドを実行します。auto_loadが失敗した場合unknownは
auto_execokを呼び出し、名前cmdである実行可能ファイルを探します。見つかればcmd及び引数一式を引数としてTcl
execコマンドを呼び出します。cmdが自動実行されることができない場合、unknown
はオリジナルコマンドがトップレベルで、あらゆるスクリプトの外で呼び出されたかをチェックします。もしそうであればunknown
は下記2つの追加の処理をします。最初にcmdが次の3つのフォーマットのいずれかであるかを見ます。
!!, !event, あるいは ^old^new?^?
もしそうであればunknown は同じ構文のcshと同じ方法でコール履歴置換を実施します。最後にunknown
はcmdが現存する唯一なTclコマンドの省略形かどうかを探します。見つかればコマンド名を拡張して、オリジナル引数を与えてコマンドを実行します。前述の努力のいずれもコマンドを実行させることができなかった場合、unknown
はエラーを返します。グローバル変数auto_noloadが定義された場合、auto_loadステップは実行されません。グローバル変数auto_noexecが定義されればauto‐execステップは実行されません。正常に実行された場合unknown
の戻り値は、最終的に実行されたコマンドからの戻り値です。
info proc interp library
error non-existence-command
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|