这是因为
当我将/bin/zsh -c
与print
命令一起使用时,我感到困惑,因为没有输出。
如何使用/bin/zsh -c
在下一个提示中获取foo
?
$ print -z foo
$ foo
(↑this is expected result that foo is in next prompt)
$ /bin/zsh -c print -z foo
$
(not show foo in next prompt)
-z
选项打印到编辑缓冲区(用于下一个提示(。所以如果你运行:
$ /bin/zsh -c 'print -z FOO'
它将把CCD_ 6推送到该CCD_。但该子shell将在运行print -z FOO
之后立即退出,因此FOO
最终将被丢弃在void中。子shell无法操作其父shell编辑缓冲区(它们是完全不同的进程,有自己的编辑缓冲区(。
如果您只想将FOO
注入当前shell的下一个命令行,只需运行:
$ builtin print -z FOO
并且下一个提示看起来是这样的(_
是等待用户输入的光标(:
$ FOO_
在当前shell中运行它,而不是在子shell中运行。
$ print -z echo hello
$ echo hello <-- Already in the buffer, only pressing ENTER now
hello
$