V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhoudaiyu
V2EX  ›  问与答

请教大家一个关于命令的执行结果在 fish 和 bash 有差异的问题

  •  
  •   zhoudaiyu · 2022-11-16 19:49:03 +08:00 · 926 次点击
    这是一个创建于 755 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图所示,在 fish 下 ls 一个不存在的文件,并打印一个字符串,再接一个&想把命令挂在后台运行 [为了简化问题,因此变成了打印一个字符串,实际上是想后台启动一个 web 服务] ,因为文件不存在,所以直接退出了;但一样的命令换在 bash 执行,敲完了命令按回车后,就夯住了,直到再按一个回车才退出。想不通这是为啥呢?请 shell 大佬解答一下!谢谢!
    7 条回复    2022-11-16 21:27:42 +08:00
    leonshaw
        1
    leonshaw  
       2022-11-16 19:58:47 +08:00
    并没有 hang 住,只是输出打到了同一行
    zhoudaiyu
        2
    zhoudaiyu  
    OP
       2022-11-16 20:00:14 +08:00
    @leonshaw #1 我在两台服务器上试了,bash 都会 hang 住啊,必须按一下回车才能返回可以输入命令的状态
    BrettD
        3
    BrettD  
       2022-11-16 20:01:53 +08:00 via iPhone
    bash 没有卡住,你可以直接输入命令然后按回车,会正常运行你的命令
    leonshaw
        4
    leonshaw  
       2022-11-16 20:06:22 +08:00
    @zhoudaiyu 前面提示符已经出来了,你可以直接输入命令。另外 bash 的效果相当于
    (ls DOSENOTEXIST && echo NO) &
    fish 的效果相当于
    (ls DOSENOTEXIST) && (echo NO &)
    zhoudaiyu
        5
    zhoudaiyu  
    OP
       2022-11-16 20:08:52 +08:00
    @leonshaw #4 哦哦,明白了,确实可以,但是(ls DOSENOTEXIST && echo NO) & 和 (ls DOSENOTEXIST) && (echo NO &) 我感觉 bash 和 fish 差的还挺多的
    mcfog
        6
    mcfog  
       2022-11-16 21:18:52 +08:00
    fish 之前甚至没有怎么考虑过 bash 兼容 && 2>&1 这些东西的支持都还是后加的
    nightwitch
        7
    nightwitch  
       2022-11-16 21:27:42 +08:00
    fish 主动不兼容 bash 是他的主打卖点之一
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:51 · PVG 16:51 · LAX 00:51 · JFK 03:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.