V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhoudaiyu
V2EX  ›  问与答

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

  •  
  •   zhoudaiyu ·
    PRO
    · Nov 16, 2022 · 1297 views
    This topic created in 1262 days ago, the information mentioned may be changed or developed.

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