为什么ZSH挂起空重定向?

时间:2013-03-21 10:45:55

标签: bash shell zsh

要在通常使用的unixy环境中截断文件:

$ > file

在bash(也是破折号)中,文件被截断(或者如果它不存在则创建),然后提示返回。在zsh中,文件被截断/创建,但它会挂起。您必须Ctrl-C才能再次使用提示。

重定向非空输出可以正常工作:

zsh$ cat nonempty.file > file
zsh$

问题是:

是否预期会出现这种情况?是zsh 错误

1 个答案:

答案 0 :(得分:11)

我不是真正的zsh用户,但似乎zsh中的> file与bash中的cat > file相同。要在zsh中创建新文件或将其截断,请使用: > file。这也适用于bash。


更新

在zsh手册中找到了这个:

  

没有命令的重定向:

     
    

当一个简单的命令由一个或多个重定向运算符和零个或多个参数赋值组成时,但没有命令名称, zsh可以通过多种方式运行

         

如果未设置参数 NULLCMD 或设置了选项CSH_NULLCMD,则会导致错误。这是csh行为     模拟CSH_NULLCMD时默认设置为csh

         

如果设置了选项 SH_NULLCMD ,则会将内置的 : 作为具有给定重定向的命令插入。这是     模拟 sh ksh 时的默认设置。

         

否则,如果设置了参数NULLCMD,则其值将用作具有给定重定向的命令。如果两者都有     设置NULLCMDREADNULLCMD,然后使用后者的值而不是前者的值     重定向是一种输入。 NULLCMD的默认设置为cat READNULLCMD的默认设置为more

  

在我的系统上,默认为:

$ echo $ZSH_VERSION
4.3.10
$ echo $NULLCMD
cat
$ echo $READNULLCMD
/usr/bin/pager
$