我如何从 tclsh 内部 运行 交互式 shell 例如 "exec tclsh"?

How do I run interactive shell such as "exec tclsh" from inside tclsh?

是否可以从 tclsh 内部 运行 一些交互式 shell?显然,从 bash 内部 运行 一个交互式 shell 例如 bash 或 tclsh 很容易,但我还没有找到相反的方法。

如果我从 tclsh 内部 运行 "exec tclsh" 或 "exec bash" 我不会得到提示,直到我输入 "exit" 并按回车键,或者我使用 "ctrl-C" 杀死父 tclsh。

如果可能的话,我宁愿不使用外部包。

如果您不想传递值(退出代码除外)返回调用 Tcl 代码,您可以这样做它很容易通过重定向标准通道使 Tcl 不捕获它们:

exec tclsh <@stdin >@stdout 2>@stderr

这几乎适用于任何子进程(我刚刚用 vi 对其进行了测试)并且如果 tclsh 决定尝试 运行子进程。

如果您想做任何比这更复杂的事情,您可能需要考虑使用 Expect,否则会有很长的棘手陷阱列表。