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

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

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

而且 bash 也没有带有高亮和命令补全,都是刚需
7461 次点击
所在节点    Linux
39 条回复
GiantHard
2022-11-18 13:43:48 +08:00
可以看看 arch wiki 怎么说: https://wiki.archlinux.org/title/Fish#Setting_fish_as_interactive_shell_only

> Not setting fish as system wide or user default allows the current Bash scripts to run on startup. It ensures the current user's environment variables are unchanged and are exported to fish which then runs as a Bash child.

只要合理地设置,使用 fish 作为日常 shell 完全没有问题
eh
2022-11-18 14:32:52 +08:00
日常用 fish ,脚本写 bash
Kiske
2022-11-18 14:59:55 +08:00
zsh 初始化不加载 /etc/profile.d/ 下的所有脚本,如果当作默认终端, 会导致 Fedora flatpak 无法安装应用。
ztc
2022-11-18 15:24:44 +08:00
我也用 fish ,自己写一些 alias
ztc
2022-11-18 15:25:20 +08:00
感觉 fish 比 zsh 速度更快
initd
2022-11-18 15:41:04 +08:00
curl -L get-cn.zsh.one | sh
xiaofami
2022-11-18 16:21:12 +08:00
分享下我在 Manjaro ARM 下使用的 bash 美化方案,进入 github 目录后自动显示分支名,配色也还算好看:

1. sudo pacman -Sy silver ttf-nerd-fonts-symbols
2. 创建 ~/.config/silver/silver.toml 文件:

[[left]]
name = "status"
color.background = "black"
color.foreground = "white"

[[left]]
name = "user"
color.background = "yellow"
color.foreground = "black"

[[left]]
name = "dir"
color.background = "blue"
color.foreground = "black"

[[left]]
name = "git"
color.background = "green"
color.foreground = "black"

[[left]]
name = "cmdtime"
color.background = "magenta"
color.foreground = "black"

3. 修改 ~/.bashrc:

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

PS1='[\u@\h \W]\$ '

# configure silver command prompt
export SILVER_ICONS=nerd
source <(silver init)

# source bash aliases
source ~/.bash_aliases
tramm
2022-11-18 16:43:54 +08:00
日常 fish,zsh 这样的,写脚本,运行其他脚本时 bash. 有的脚本 fish 运行不了,光看提示一半还查不到原因.
FightPig
2022-11-18 17:09:18 +08:00
以前一直 oh my zsh,后来太卡了,换成 fish 后舒服了
leeyuzhe
2022-11-18 17:19:00 +08:00
我已经是 oh my zsh 的形状了
linuxgo
2022-11-18 17:29:10 +08:00
@zed1018 确实有
linuxgo
2022-11-18 17:30:02 +08:00
bash 下 tab 就可以补全命令呀
shenyuzhi
2022-11-18 17:39:24 +08:00
挑个顺眼的用就行了
dcsuibian
2022-11-18 17:52:10 +08:00
如果刚需的话,用 zsh+oh-my-zsh 呗。

我熟悉、学习 shell 的主要目的就是熟练 Linux 操作,而 bash 在 Linux 里应用仍然是最广的。肯定要熟练使用.
我即使用 zsh ,也是当 bash 来用的。(语法大部分兼容)
v2exe2v
2022-11-18 18:59:32 +08:00
ohmyzsh +1
alexmy
2022-11-18 19:37:30 +08:00
zsh 用 ys 主题,多棒。
不过有些 shell 脚本在 bash 下面执行正常,在 zsh 下面执行报错。
youngster
2022-11-18 21:19:05 +08:00
bash 原生
zsh 插件 自定义 比如高亮、主题、历史命令、快捷指令啊等等
fish 就是一键安装,解决自定义和费事的配置,开箱即用, 支持 zsh 的一些插件和默认功能

但是,zsh 和 fish 在很多语法上和 bash 有很多的区别,在 bash 通用的世界里,很多开源工具运行是都可能会碰到 bash 命令无法在 fish 和 zsh 环境下执行的问题,所以慎用,关键时刻还得切回 bash
abowloflrf
2022-11-18 21:48:48 +08:00
fish + starship 爽歪歪,要执行 bash 脚本的时候最前面加上 #!/bin/bash 就好了
nlzy
2022-11-18 22:05:33 +08:00
用 fish 还是会有些影响的,实际使用下来有一点感觉是,网上找到的比较复杂的 one line 的 shell 命令放在 fish 上大概率跑不了的,特别是设置成默认 shell 之后还会导致一些软件不兼容。建议像 #4 说的,不要在 /etc/passwd 里设置默认 shell ,而是在自己常用的终端模拟器上设置。

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

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

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

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

© 2021 V2EX