The [exec] command treats ampersands (&) in its arguments specially, e.g. for making execution asynchronous. This can be a problem if an argument, like an URL, contains ampersamds. petterik@gol.com (Petteri K) writes in [the comp.lang.tcl newsgroup]: Would anybody know a workaround in case $url contains character '&' e.g. http://127.0.0.1/cgi-bin/script?var1=abc&var2=xyz [Benjamin Riefenstahl] replied: [exec] plays tricks with quoting which make it impossible for me to get the right command executed in Tcl 8.3.4. What works on W2K here though is this: ---- set url "http://www.tcl.tk?hello&hi" set shell [open "|[file join $env(COMSPEC)]" w] fconfigure $shell -buffering line puts $shell "start \"\" \"$url\"" puts $shell exit close $shell I hope this works on Windows 9x/Me, too. ---- Here is the simplest way that I've found, and I use it in my mindweb [http://www.rohanpall.com/mindweb/]. It relies on the [rundll] utility available with some versions of Windows. proc goUrl x { global tcl_platform if {$tcl_platform(platform) eq "windows"} { set x [regsub -all -nocase {htm} $x {ht%6D}] exec rundll32 url.dll,FileProtocolHandler $x & } } ;# This definitely works on Win95 and Win98. See [invoking browsers] ''--[Ro]'' ---- For Unix/Linux, it is highly probable that the line set shell [open "|/bin/sh" w] works as well (just in place of the "start" command, you'd have to substitute a more specific one...) But one idea for more cross-platformity: Unix has (guaranteed?) env(SHELL) to give the default shell; Windows has env(COMSPEC), Mac I don't know. Would it be worthwile to unify these into a, say, ''::[tcl_platform](shell)'' element? ([RS])