2012-04-10 20 views

答えて

7

ありませんが、あなたはこのように、どこかsource D」のファイルを追跡するためにsourceコマンド自体を上書きすることができます。

rename source __real_source 
proc source args { 
    global sourced 
    lappend sourced $args 
    uplevel 1 [linsert $args 0 __real_source] 
} 

更新:sourceの脆弱に関するドナルさんのコメントに拡大しますコマンドには実行トレースを設定する方法があります:

proc register_sourced {cmd args} { 
    global sourced 
    lappend sourced [lindex $cmd end] 
} 
trace add execution source leave register_sourced 
+1

'uplevel'コマンドで' __real_source'を実行するべきではありませんか? – bmk

+0

8.6では 'proc source args {lappend :: sourced [lindex $ args end]; tailcall __real_source {*} $ args}' –

+0

ありがとう、@bmkと入力している間にこれを見落としました – kostix

関連する問題