Tcl has tm commands for managing access to tcl modules

::tcl::tm::path add path ...
::tcl::tm::path remove path ...
::tcl::tm::path list
::tcl::tm::roots path ...

A list of directories (the "module path") is managed by the commands ::tcl::tm::path and ::tcl::tm::roots. For example, the current value of the module path is returned by the command [::tcl::tm::path list].

To load a module into the interpreter, you use package require as usual for a Tcl package (this is not properly documented in the manual pages of package and tm). The command package require searches the "module path" directories for modules, which are files named "*.tm". The name of the module file determines the name and version that are entered into the package database when module directories are scanned. If the mechanism finds a corresponding module file, it will be sourced.

See for a full discussion of module filename requirements, resolution of '::' in module names, and translation of '::' to directory separator characters.

See Tcl modules for more on modules.

See Distribution Mechanisms for a discussion of extension mechanisms in general.

(1) TM frequently is used as an abbreviation of the word Trademark.

See [add other references] for more info on the legal ramifications of a trademark.