【发布时间】:2011-08-15 22:54:22
【问题描述】:
如何从 TCL 代码打开一个新终端,执行一些操作(例如 ls -l),获取这些操作的结果并关闭该终端?
exec 命令是否打开一个新终端,所有操作都在终端中调用,或者当我用 exec 调用例如“cd ..”时,该命令与 linux 终端和 linux 命令无关,这些是只是与 linux 标准命令同名的纯 tcl 命令?
【问题讨论】:
-
您知道
cd是一个永远不应该在子进程中单独执行的命令吗? “当前目录”是一个概念,在所有操作系统上都是本地进程/继承的(嗯,可能不在 iOS 或 Android 上,但你没有处理它们)。 -
我突然想到“打开一个新终端”可能意味着这是在远程系统上完成的。 是这样吗?如果是的话,它确实会改变解决方案的性质。
-
您应该意识到,在 Linux(实际上在所有 unix 上)上,终端永远不会返回在其中执行的结果。事实上,它们经常返回 0 并且不向标准输出打印任何内容。在终端中执行操作的是 shell(bash、ksh、csh、zsh、tclsh),终端本身只是 GUI。所以如果你想要 shell 操作的结果,终端肯定不是你想要启动的。
-
谢谢,你是对的!因此,我已经回答了我的问题。请看。 :))