2012-04-10 12 views

Antwort

7

Nein, aber Sie können den source Befehl selbst außer Kraft setzen Spur der source ‚d Dateien irgendwo zu halten, wie folgt aus:

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

Update: auf die Bemerkung des Donal Erweiterung in Bezug auf die Fragilität des source Befehl gibt es, wie man eine Ausführungsverfolgung einrichten könnte:

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

Sollten Sie "__real_source" in Ihrem 'uplevel' Befehl nicht ausführen? – bmk

+0

Mit 8.6 würde ich verwenden: 'proc Quellenargumente {lappend :: Quelle [lindex $ Argumente Ende]; tailcall __real_source {*} $ Argumente}' –

+0

Danke, @bmk, ich habe dies während der Eingabe übersehen – kostix

Verwandte Themen