这是@0rax 在 issue #4206 中的评论的衍生。
提交 d383e3b 更改read
以始终定义变量,即使没有读取数据也是如此。 它假定至少提供了一个变量名称。 但目前在没有变量名的情况下调用read
是合法的。 这没有任何意义。 在 bash 和类似 shell 中有意义的唯一原因是它们默认为 var name REPLY
。 Fish 不会这样做,因此不应允许在没有至少一个 var 名称的情况下调用read
。 即使用户只是想丢弃一行输入,他们也应该指定一个 var 名称来存储该行文本。
问题是我们是否应该为 2.7.0 版本(2.x 系列中的最终版本)更改这一点。 我们绝对应该在 3.0.0 版本中更改它。
我认为让它的行为与 2.7 一样,并使其成为 3.0 的错误。
可以确认 71af1a9 恢复了https://github.com/fish-shell/fish-shell/issues/4206 中描述的所需行为。
感谢您的快速修复!
合并到主要分支以包含在我们的 fish 3.0 版本中。
最有用的评论
我认为让它的行为与 2.7 一样,并使其成为 3.0 的错误。