求解 bash zsh fish 的区别以及会有的影响

2022-11-18 10:44:34 +08:00
 likre
我目前在用 arch+gnome ,装了 fish 来当默认的 shell 。

看到一些文章和教程都说推荐用 bash 。但是命令好像都是互通的(和 fish ,都是可执行文件,用什么 shell 调用都一样?)。实在说能感受到的不同是我有个想启动就设值的环境变量,发现 bash 和 fish 语法不同。

而且 bash 也没有带有高亮和命令补全,都是刚需
9109 次点击
所在节点    Linux
39 条回复
hefish
2022-11-18 10:45:46 +08:00
fish 不支持 vscode 的 remote develop 。。。
zhanglintc
2022-11-18 10:49:21 +08:00
如果要写 shell 脚本的话,fish 很多语法应该和 bash 不一样。
反正习惯用 bash 肯定最好,因为你去操作外面或者别人的机器的时候,大概率是 bash 。
如果就考虑你自己用,肯定没有机会用别人的电脑。那你用 fish 肯定无所谓。
zed1018
2022-11-18 11:00:06 +08:00
bash 怎么可能没有命令补全,bash_completion
hingle
2022-11-18 11:05:37 +08:00
不要动 chsh 。直接装 fish ,在 terminal 配置里设成 fish 就行,jetbrains 系列、vscode 等也都有相关配置。
xiyangzh
2022-11-18 11:08:42 +08:00
别用 fish 了, 那个语法跟其他 shell 不一样,烦得要死。fish 的亮点功能,很多都移植 bash 和 zsh 了。
guanzhangzhang
2022-11-18 11:10:03 +08:00
如果你是个人开发者,不登录其他机器,你想用啥就用啥,如果你是经常登录其他机器,就老老实实用 bash
clrss
2022-11-18 11:14:15 +08:00
一般用 bash. 同时还用 mac 的话可以换 zsh.

用用基本功能(completion 、alias 、env)就行了.

能用 GUI 用 GUI. 复杂脚本用 python 等正经语言.
cmdOptionKana
2022-11-18 11:15:04 +08:00
fish 很多自己的语法, 但日常使用学一下写简短脚本也不难(稍长的脚本可以用 python 写), 别人的脚本可以用 `bash abc.sh` 的形式运行.
huangwei8ku
2022-11-18 11:27:26 +08:00
zsh 好用,我个人一直用这个
kokutou
2022-11-18 11:28:12 +08:00
zsh 吧
cubecube
2022-11-18 11:28:33 +08:00
oh my bash 装一下,基本上就够了。
我 mac 上本地用 fish ,体感上 fish 速度比较快
blankmiss
2022-11-18 11:36:01 +08:00
还是 zsh 或 bash 吧 fish 好像是终端上使用 func 有点问题 在 sh 里面直接指定 bash 去解释就正常
libook
2022-11-18 11:40:24 +08:00
语法上会有一些区别,你可以参考这个 https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh

bash 应用最广泛,支持也最广泛,你可以同时装 bash 和其他的 shell ,自己平时手操可以用其他 shell ,跑第三方脚本的时候用 bash ,一般脚本第一行都会写好 hashbang ,可以自动选择 shell 。

zsh 和 fish 算是两种设计思路吧,zsh 就是可扩展性强,可以搞一堆插件和配置实现各种功能和自定义; fish 则是苹果式的思维,认为一个产品如果让用户折腾的话就是失败设计。

我个人喜欢自定义,所以用 zsh 比较多,甚至创建了个工具箱 https://github.com/libook/IdleBox
yazinnnn
2022-11-18 12:20:28 +08:00
不懂就是没区别
ospider
2022-11-18 12:26:40 +08:00
个人感觉不错,我从 zsh 迁移到 fish 的体会: https://zhuanlan.zhihu.com/p/441328829
MrKrabs
2022-11-18 12:32:59 +08:00
#!/bin/bash
v2defy
2022-11-18 12:33:35 +08:00
个人感觉不好,用了几天 fish 又回到了 zsh 。

原因是 fish 总是有一些莫名的 bug ,比如当我一条命令执行失败了,第二次想要执行的时候,它就不执行了,很奇怪。
inhzus
2022-11-18 12:44:58 +08:00
只要熟悉 fish 语法就没啥问题,况且又不是用了 fish 就不能执行 bash 脚本…没遇到过楼上 vscode remote 不能用的情况。
fish 四年用户
kongkongyzt
2022-11-18 12:46:09 +08:00
大多数文章都推荐的 zsh 吧,怎么会是默认的 bash 呢
lijiangang886
2022-11-18 13:20:51 +08:00
linux 系统(相对)底层的层面还是 bash ( debian 系搞了个叫 dash 的 bash 子集),这是动不了的
fish 不兼容 bash ,而且只是缺省配置比较易用,zsh 通过配置也能做到 fish 的功能
zsh 相对于 bash 可配置性更强但是大部分系统不缺省安装,而且配置起来很复杂,好在有大把现成的配置可以抄
所以,日常可以用 zsh ,有跨机器需求的脚本还得用 bash

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896148

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX