The main script is the primary script that is executed by the interpreter , e.g. tclsh or wish .
One common technique is to have a script run a self test if it detects that it is the main script . The detection routine usually looks something like this:
if {[info exists argv0] && $argv0 eq [info script]} { #do stuff }
or , as formulated in a comp.lang.tcl posting by DKF:
if {[string equal $::argv0 [info script]] || [ array exists ::embed_args]} { main }
Examples of the following more complicated test can be found :
#unneeded complexity ? if {[info exists argv0] && [file tail [info script]] eq [file tail $argv0]} { #do stuff }
but I (PYK) don't see a scenario in which is needed , as info script always has the same value as $argv0 in all the cases I tested .