"exec source <script>"在tcl中不起作用

Ami*_*hum 2 unix csh tcl

我正在尝试使用以下命令在Tcl中调用脚本:

exec source <script path>
Run Code Online (Sandbox Code Playgroud)

我得到了错误

couldn't execute "source": no such file or directory
Run Code Online (Sandbox Code Playgroud)

如何从tcl调用另一个脚本?

编辑:我正在运行我从办公室里的另一个人那里得到的命令.我被指示用source明确地运行"source".换句话说,我如何在Tcl中运行任何可以在cshell中运行的命令?

Bry*_*ley 7

如果你给出的脚本是一个cshell脚本,你可以这样执行:

exec /bin/csh $path_to_script
Run Code Online (Sandbox Code Playgroud)

实际上,这就是'source'命令在交互式shell中的作用.目前尚不清楚这是否真的是你想要做的事情(不完全是,但足够接近这个讨论).

你不能执行source命令的原因是exec只能处理可执行文件(因此名称为'exec').source命令不是作为exectuable文件实现的,它是内置于shell的命令.因此,它不能被执行.

如果你真的觉得需要执行source命令或任何其他内置命令,你可以这样做:

exec /bin/csh -c "source $path_to_script"
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,您将执行c shell,并要求它运行命令"source".对于source命令的特定情况,这实际上没有多大意义.

但是,我不确定这些会不会真正做到你所期望的.通常如果有人说"这里有一些命令,只做'源',它通常只定义一些别名以及在交互式shell中使用的东西.这些别名在Tcl中不起作用.