出于一个原因,在某些系统上,您可以严格锁定可以在 shebang 行中运行的可执行文件。换句话说,它可能拒绝运行任何不在/bin
. 或者,如果您的管理员特别虐待狂,他们可能会试图强迫每个人使用zsh
:-)
其次,这将tclsh
根据您当前的路径设置运行。如果您希望不同的用户使用不同版本的 TCL 运行它,那将是非常宝贵的。否则,您必须在 shebang 线上给出一个绝对路径,这在不同的系统上可能会有所不同(尽管/usr/bin/env
也可以解决这个问题)。
tclsh
在提交之前使用更新版本的脚本测试脚本也很方便。例如,您可以在当前最新的 Debian (7.1) 下拥有 tclsh 8.5,同时通过构建 TCL 8.6$HOME/staging/tcl86
并更改路径以使目录出现在usr/bin
.
在我的系统上(已锁定到我的规格,但没有更多),脚本:
#!/usr/bin/env tclsh
puts $tcl_version
工作得很好,输出:
8.5
脚本也是如此:
#!/usr/bin/tclsh
puts $tcl_version
尽管如前所述,它与系统版本相关,tclsh
而不是我路径上的第一个版本。
而且,是的,您可以根据以下记录很好地理解论点:
pax> cat qq.tcsh
#!/usr/bin/tclsh
puts $argc
puts $argv
pax> qq.tcsh my name is pax
4
my name is pax