V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fiveelementgid
V2EX  ›  程序员

zsh vs bash

  •  
  •   fiveelementgid · 2020-10-24 17:13:10 +08:00 via Android · 11082 次点击
    这是一个创建于 1489 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Git-sam 官网中,git 书籍 pro git 有提到 zsh

    查了一下,zsh 是 mac 系统的默认 shell

    没用过苹果电脑,来问问具体 zsh 有啥厉害的地方

    目前已知

    1.command-completition 命令补全很好

    2.可以自己配置开源的一大堆 theme.....

    提问:

    用惯 bash shell 的有必要换吗?

    89 条回复    2020-10-26 11:39:38 +08:00
    iamwho
        1
    iamwho  
       2020-10-24 17:18:53 +08:00   ❤️ 2
    没必要

    如果你认为列出的两点很重要,那么 fishshell 比 zsh 更好。
    hanxiV2EX
        2
    hanxiV2EX  
       2020-10-24 17:23:35 +08:00 via Android
    bash shell 习惯就好,补全和主题都可以自己配置。
    mschultz
        3
    mschultz  
       2020-10-24 17:26:04 +08:00
    zsh 有 oh-my-zsh,
    bash 有 oh-my-bash

    https://github.com/ohmybash/oh-my-bash
    luckyrayyy
        4
    luckyrayyy  
       2020-10-24 17:26:32 +08:00
    好看,插件多,别的没觉得。另外 bash 这两点我也不知道是不满足还是折腾得人少,有可能也满足。
    ipwx
        5
    ipwx  
       2020-10-24 17:28:15 +08:00
    zsh 还挺兼容 bash 语法的,就是有点慢。
    Tink
        6
    Tink  
       2020-10-24 17:39:23 +08:00 via Android
    这两个大同小异
    laoyur
        7
    laoyur  
       2020-10-24 17:41:05 +08:00
    > 查了一下,zsh 是 mac 系统的默认 shell

    laoyur
        8
    laoyur  
       2020-10-24 17:43:04 +08:00
    @laoyur 搜了一下,还确实是,看来是因为我的 mac os 版本太旧了,😢 打搅了
    love
        9
    love  
       2020-10-24 17:46:47 +08:00
    是有改进,但好处没有到要折腾换了默认 bash 的地步,毕竟平时 bash 足够用了
    boris93
        10
    boris93  
       2020-10-24 17:50:18 +08:00 via Android
    @laoyur #8 如果你是老系统升级上来的,那么你的默认 shell 还是 bash,但是每次打开终端都会提示你换成 zsh
    charlie21
        11
    charlie21  
       2020-10-24 18:12:59 +08:00
    不建议瞎搞 bash 。瞎搞 zsh 出问题之后还可以用 bash,瞎搞 bash 出问题之后你用什么
    crclz
        12
    crclz  
       2020-10-24 18:18:04 +08:00
    bash 很好用,有复杂的功能的时候可以偶尔写写 python 脚本作为补充
    xupefei
        13
    xupefei  
       2020-10-24 18:19:48 +08:00 via iPhone   ❤️ 1
    我选 fish👍
    zhuangzhuang1988
        14
    zhuangzhuang1988  
       2020-10-24 18:23:56 +08:00   ❤️ 1
    要不试试 pwsh 😄
    lights
        15
    lights  
       2020-10-24 18:34:18 +08:00
    我甚至不知道 bash 、zsh 它们有什么本质上的区别
    我用 zsh,唯一原因是习惯了 oh-my-zsh + git 的插件
    JackieMe
        16
    JackieMe  
       2020-10-24 18:39:17 +08:00 via Android
    换了随便下个 oh my zsh 用两天就知道了,不全确实方便很多,感觉节约点时间。反正我是用了就回不去了。换了用两天也不损失什么,没什么学习成本。
    clrss
        17
    clrss  
       2020-10-24 18:42:35 +08:00 via iPhone
    没有必要。
    mac 下原生 bash 太老了(开源协议问题),可 brew 安装 bash 5
    k3Sv1
        18
    k3Sv1  
       2020-10-24 18:56:19 +08:00 via iPhone
    如果你觉得你列出的两点是“必要”的,换吧。
    虽然 mac 已经默认 zsh 了,我也跟着用了(
    nuk
        19
    nuk  
       2020-10-24 18:57:23 +08:00
    cli 用的不多的话,有配置的时间不如开两把游戏。
    fiveelementgid
        20
    fiveelementgid  
    OP
       2020-10-24 19:11:17 +08:00 via Android
    @iamwho emmmmm 查资料的时候确实第一个弹出来的是 fishshell 和 zsh....
    fiveelementgid
        21
    fiveelementgid  
    OP
       2020-10-24 19:11:32 +08:00 via Android
    @hanxiV2EX 楼下给了配置....我去看看
    fiveelementgid
        22
    fiveelementgid  
    OP
       2020-10-24 19:14:04 +08:00 via Android
    @mschultz 感谢!!!!!
    fiveelementgid
        23
    fiveelementgid  
    OP
       2020-10-24 19:14:23 +08:00 via Android
    @luckyrayyy 入 oh-my-bash 了
    fiveelementgid
        24
    fiveelementgid  
    OP
       2020-10-24 19:14:32 +08:00 via Android
    @ipwx 慢?没用过
    fiveelementgid
        25
    fiveelementgid  
    OP
       2020-10-24 19:14:47 +08:00 via Android
    @Tink 好吧
    fiveelementgid
        26
    fiveelementgid  
    OP
       2020-10-24 19:15:08 +08:00 via Android
    @laoyur 是的,这个查出来确实是 2019-11 更换的
    fiveelementgid
        27
    fiveelementgid  
    OP
       2020-10-24 19:15:17 +08:00 via Android
    @love 好的
    fiveelementgid
        28
    fiveelementgid  
    OP
       2020-10-24 19:17:50 +08:00
    @charlie21 也对......
    @crclz 一般写 bash script...其实还好,很少写 python
    fiveelementgid
        29
    fiveelementgid  
    OP
       2020-10-24 19:18:34 +08:00
    @xupefei 看到过资料,不过没仔细看
    @zhuangzhuang1988 这个听都没听过.....
    fiveelementgid
        30
    fiveelementgid  
    OP
       2020-10-24 19:19:06 +08:00
    @lights 也不知道,可能都是 shell interface,决定入 oh-my-bash 了
    fiveelementgid
        31
    fiveelementgid  
    OP
       2020-10-24 19:20:26 +08:00
    @clrss bash 加个 oh-my-bash,搞定了
    @k3Sv1 不换 zsh 了,换了 oh-my-bash
    @nuk Linux Windows 两头用......
    ppphp
        32
    ppphp  
       2020-10-24 19:34:50 +08:00
    我是觉得不用 vim 可能哪个 sh 没啥影响,主要还是 rg,fd 这种命令提升幸福感比较多一点
    Jirajine
        33
    Jirajine  
       2020-10-24 19:39:56 +08:00 via Android
    你这俩比肯定是 zsh,没有任何用 bash 的必要。
    zsh 和 fish 的话,zsh 的优点是兼容 bash,fish 的优点是不兼容 bash,所以看个人喜好。
    IgniteWhite
        34
    IgniteWhite  
       2020-10-24 20:22:19 +08:00
    catalina 之后默认 zsh,据说是版权问题
    Kobayashi
        35
    Kobayashi  
       2020-10-24 20:23:04 +08:00 via Android
    生态 https://github.com/unixorn/awesome-zsh-plugins

    看看这插件管理器和框架的数目。没有哪个 shell 能敌得过 zsh 作为一款 interactive shell 的地位。

    不管是 bash zsh fish 我们这里讨论的都是作为 interactive shell 。平时写脚本当然是 bash,这样最大能保证其兼容性。

    bash 作为一个 interactive shell,比其他两位弱多了。现在连一个完整的钩子系统都没有。
    fish 的确很有创新,从 completion history highlight 这些好设计都被 zsh 插件抄了就可以看出。但 fish 目前最大问题还是社区敌不过 zsh 、语法不合 bash 兼容。
    testcaoy7
        36
    testcaoy7  
       2020-10-24 20:29:46 +08:00 via Android
    我给我的 Mac 用的 fish
    gitopen
        37
    gitopen  
       2020-10-24 20:31:28 +08:00 via Android
    fish 有 oh my fish
    fiveelementgid
        38
    fiveelementgid  
    OP
       2020-10-24 20:34:56 +08:00 via Android
    @ppphp 你说的这两个玩意我都没听过......
    fiveelementgid
        39
    fiveelementgid  
    OP
       2020-10-24 20:35:27 +08:00 via Android
    @Jirajine 原来不兼容.....学到了(奇怪的知识增加了
    fiveelementgid
        40
    fiveelementgid  
    OP
       2020-10-24 20:36:51 +08:00 via Android
    @testcaoy7 emmmm
    fiveelementgid
        41
    fiveelementgid  
    OP
       2020-10-24 20:37:11 +08:00 via Android
    @gitopen 好像全都叫 ohMyxxxxx
    kingfalse
        42
    kingfalse  
       2020-10-24 20:38:44 +08:00 via Android
    macos 一键安装一个好看强大的 iterm2 的 oh my iterm2,喜欢的可以给个小星星

    https://github.com/KingFalse/ohmyiterm2
    Chowe
        43
    Chowe  
       2020-10-24 20:39:04 +08:00 via iPhone
    你们都太高级了,我还在用 busybox ash
    12101111
        44
    12101111  
       2020-10-24 20:48:11 +08:00   ❤️ 28
    bash 和 zsh 都要追溯到 Unix 第七版的 Bourne shell, 这是几乎所有 Unix 世界 shell 的起源.
    Ken Thompson 编写的 Unix 里包括一个 shell, 后来被称为 Thompson shell, 功能非常简单, 因此 Bourne 改进了这个 shell, 就叫 Bourne shell, 但是 Berkeley 的 Bill Joy (也是 vi 的作者和 Sun 创始人)觉得 Bourne shell 还是不好(比如流传到现在的鬼畜的语法), 就自己写了一个语法类似于 C 的 shell, 就叫 C shell, 然后随着 2BSD 发布.后来的几乎所有 shell (不包括微软家的和 fish)几乎都受到 csh 和 Bourne shell 的影响.
    Almquist 基于 System V release 4 的 shell 写的轻量级 shell 叫 Almquist shell (ash) , 仅兼容 Bourne shell
    Debian 改进的 ash 叫 dash, 而 dash 被移植到 busybox 里.
    tcsh 是 csh 的改进, 现在是 FreeBSD 的默认 shell, 也是 macOS 10.3 前的默认 shell, macOS 下的 csh 实际就是 tcsh.
    Bell 实验室的 Korn 改进了 Bourne shell, 吸收了一些 csh 的功能, 就叫 Korn Shell
    ksh 是因为需要商用 Unix 授权,因此有人重写了 ksh, 叫 public domain Korn shell (pdksh)
    OpenBSD 使用的默认 shell 就是 pdksh
    MirBSD (OpenBSD 的早期 fork) 包含了 pdksh, 叫 mksh, 是现在 Android 的默认 shell ( adb shell 命令)
    Bash(Bourne again shell)是 GNU 工程实现了 shell, 也是大多数 GNU Linux 的默认 shell, 也曾经是 macOS 的默认 shell (10.4-10.14), 兼容 Bourne shell 但吸收了 csh 和 ksh 的一些功能,
    Z shell 是 Paul Falstad 编写的兼容 Bourne shell 但吸收了 csh 和 ksh 的一些功能的 shell
    所以 bash 和 zsh 是近乎同一时间出现(89 年, 90 年)的两个不同的项目, 其相同点就是采用了 Bourne shell 的语法,因此部分兼容.
    zmxnv123
        45
    zmxnv123  
       2020-10-24 21:15:33 +08:00
    新手程序员用 bash,普通程序员用 zsh,二逼程序员用 fish,大佬程序员用 sh 。
    fiveelementgid
        46
    fiveelementgid  
    OP
       2020-10-24 21:18:13 +08:00 via Android
    @kingfalse 没有 Mac 的我默默路过
    fiveelementgid
        47
    fiveelementgid  
    OP
       2020-10-24 21:18:38 +08:00 via Android
    @Chowe ????这个又是什么玩意????
    fiveelementgid
        48
    fiveelementgid  
    OP
       2020-10-24 21:19:11 +08:00 via Android
    @12101111 emmmmm
    feather12315
        49
    feather12315  
       2020-10-24 21:22:14 +08:00 via Android
    @zmxnv123 #45 我在向二逼程序员进化
    des
        50
    des  
       2020-10-24 21:29:57 +08:00
    fish 用户+1
    最近试了试 pwsh,感觉真是的很先进的设计,也非常强大
    但是总觉得互交上不太对,不知道是需要配置还是没用习惯
    CNife
        51
    CNife  
       2020-10-24 21:37:23 +08:00
    fish,懒得折腾 oh-my-zsh
    chengxiao
        52
    chengxiao  
       2020-10-25 00:05:07 +08:00
    用 zsh 就是冲着 oh-my-zsh 补全提示 和 那堆主题去的
    其他和 bash 没区别吧
    cdlnls
        53
    cdlnls  
       2020-10-25 00:14:39 +08:00 via Android
    fish 用过还行,自己电脑用的 zsh,服务器上不折腾用的 bash 。
    cdlnls
        54
    cdlnls  
       2020-10-25 00:16:01 +08:00 via Android   ❤️ 1
    用惯 bash 确实没必要换,尝鲜的话可以用用 zsh 或者 fish
    tianshilei1992
        55
    tianshilei1992  
       2020-10-25 00:54:48 +08:00
    fish 最大的问题就是不兼容 bash 语法…
    R0ckyY2
        56
    R0ckyY2  
       2020-10-25 02:40:27 +08:00
    Google 一下 “zsh vs. bash",你会得到你想要的回答,比在这问强多了。
    nuk
        57
    nuk  
       2020-10-25 03:04:14 +08:00
    @fiveelementgid windows 登录有终端的复制粘贴,加自动补全就妥妥的了,shell 玩的越溜,回车速度越快,服务器爆炸也越快。。
    ericgui
        58
    ericgui  
       2020-10-25 03:51:12 +08:00
    @boris93 我去年的 macbook 还要 brew install zsh,什么时候开始默认的 ?
    pC0oc4EbCSsJUy4W
        59
    pC0oc4EbCSsJUy4W  
       2020-10-25 04:24:20 +08:00
    直接使用 oh my zsh 太慢了

    zsh 可以使用其他框架的,逗比 omz 强,速度也快

    zinit 等
    wtks1
        60
    wtks1  
       2020-10-25 04:37:20 +08:00 via Android
    为了兼容性,还是用 bash 吧,免得换到别的设备上适应不过来
    dcoder
        61
    dcoder  
       2020-10-25 06:25:52 +08:00
    @fiveelementgid
    为了兼容性,还是用 bash 吧,免得换到别的设备上适应不过来 +1
    用 bash 有个潜在的使用场景,就是去 Linus server 上用 terminal, 那里没有 zsh
    没必要搞 zsh. Mac 的默认 bash 很容易从 zsh 换回 bash
    noqwerty
        62
    noqwerty  
       2020-10-25 07:25:23 +08:00 via Android
    开箱即用 fish shell 挺香的,偶尔需要跑一些网上找的不兼容的 bash 脚本就手动开一个 bash 不就好了
    Smash
        63
    Smash  
       2020-10-25 08:36:14 +08:00 via Android
    自己的 mbp 和黑苹果都是 fish 。我觉得不冲突,不了兼容的时候,手动敲下 bash 切回去不就行了吗。
    aloxaf
        64
    aloxaf  
       2020-10-25 08:53:40 +08:00 via Android
    简要地讲,作为交互式 shell zsh 的地位是无可撼动的。
    aloxaf
        65
    aloxaf  
       2020-10-25 08:55:38 +08:00 via Android
    bash 相比 zsh 的唯一优势是各大系统预装,写起脚本来兼容性好。作为交互式 shell
    jin7
        66
    jin7  
       2020-10-25 10:52:11 +08:00
    无所谓 有啥用啥
    cco
        67
    cco  
       2020-10-25 10:53:30 +08:00
    首先,这不是默认的 bash 。
    其次,好用,自动补全,大小写不铭感,有多个主题好看等。
    没用过 fish 。
    EvilDevilJin
        68
    EvilDevilJin  
       2020-10-25 11:22:51 +08:00
    用的 zsh,就是为了那 oh my zsh,一堆插件语法高亮自动记忆建议补全,还有各种高颜值主题
    newtype0092
        69
    newtype0092  
       2020-10-25 11:33:41 +08:00
    fish +1
    折腾多了就会发现,开箱即用和最简化的配置方式才是长期使用最看重的点。
    boris93
        70
    boris93  
       2020-10-25 13:05:32 +08:00 via Android
    @ericgui #58 Catalina
    fiveelementgid
        71
    fiveelementgid  
    OP
       2020-10-25 13:17:35 +08:00 via Android
    @dcoder
    fiveelementgid
        72
    fiveelementgid  
    OP
       2020-10-25 13:19:06 +08:00 via Android
    @R0ckyY2 看提问.....我就是在 Google 查到这玩意我才知道 zsh 过来问的.....
    fiveelementgid
        73
    fiveelementgid  
    OP
       2020-10-25 13:19:37 +08:00 via Android
    @nuk 深有体会 hhhhhhh
    fiveelementgid
        74
    fiveelementgid  
    OP
       2020-10-25 13:20:16 +08:00 via Android
    @cco zsh 确实是 Mac 默认的.....(谷歌说的
    R0ckyY2
        75
    R0ckyY2  
       2020-10-25 13:48:27 +08:00
    @fiveelementgid 那你就继续 Google 查”why zsh", "why bash","zsh bash which is better" 等。
    zlowly
        76
    zlowly  
       2020-10-25 14:15:07 +08:00
    如果是自己个人使用,也有时间折腾,换 zsh 可以有更好功能更强的定制。如果是工作需要维护服务器,则不建议更换。
    fiveelementgid
        77
    fiveelementgid  
    OP
       2020-10-25 14:27:32 +08:00 via Android
    @R0ckyY2 ......我已经折腾出来了用 oh-my-bash 凑合着用了
    fiveelementgid
        78
    fiveelementgid  
    OP
       2020-10-25 14:28:28 +08:00 via Android
    @zlowly 不是职业运维,但是自己的服务器基本都是自己打理啥的.......放弃了,用 bash 套个 oh-my-bash 凑合了
    R0ckyY2
        79
    R0ckyY2  
       2020-10-25 14:48:09 +08:00
    @fiveelementgid 如果 zsh 的话,推荐 zimfw ( https://github.com/zimfw/zimfw ),这是我在尝试了主流的 manager 后,觉得易用性和功能上最好的,集轻量、速度于一身。
    Prompt 的话,最好的就是 powerlevel10k ( https://github.com/romkatv/powerlevel10k ),没有之一,它的“异步”加载,可以使得我们“忽略”zsh 在用了 plugin 后加载速度慢的缺点。
    附上我自己的 zsh 配置,比较基础,供参考: https://github.com/yanzhang0219/dotfiles/tree/master/.config/zsh
    谢谢。
    JavaIO
        80
    JavaIO  
       2020-10-25 15:32:48 +08:00
    折腾完 zsh,最后还是换成 bash
    610915518
        81
    610915518  
       2020-10-25 16:39:10 +08:00
    就是为了用 oh-my-zsh 而使用的 zsh,随便装个主题就能用了。
    wzxlovesy
        82
    wzxlovesy  
       2020-10-25 16:43:06 +08:00 via Android
    zsh 在一些低性能嵌入式设备上很慢……我在 rpi4 上的 docker 里尝试打开 zsh 大概要十几秒,所以对性能有严苛要求的环境还是用 bash 或者 sh
    cco
        83
    cco  
       2020-10-25 16:48:43 +08:00
    @cco 可能我把 zsh 理解为 omz 了,因为我还单独装了一把- -!
    fox0001
        84
    fox0001  
       2020-10-25 18:41:43 +08:00 via Android
    有空折腾这个,还不如多写两行代码…
    k3Sv1
        85
    k3Sv1  
       2020-10-25 21:20:56 +08:00 via iPhone
    @ppphp u1s1 确实 grep 和 find 已经被我扫到垃圾桶了
    fiveelementgid
        86
    fiveelementgid  
    OP
       2020-10-25 22:42:49 +08:00 via Android
    @fox0001 在写了,在写了,别骂了,再骂人都傻了
    lululau
        87
    lululau  
       2020-10-25 22:46:43 +08:00 via iPhone
    如果认为 zsh 就是个漂亮主题和还用的补全,可以看看我录的这个对于 zsh 的介绍 https://b23.tv/iI5nTh
    qianlv7
        88
    qianlv7  
       2020-10-26 01:47:35 +08:00 via iPhone
    @charlie21 直接 sh,也不是不能搞
    Dogtler
        89
    Dogtler  
       2020-10-26 11:39:38 +08:00
    ohmyfish,真的香,快乐的一比
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:11 · PVG 17:11 · LAX 01:11 · JFK 04:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.