- 主题:各位说说bash,zsh,pwsh各自缺点吧
zsh对bash是向下兼容的,fish就另起炉灶了。
两个我都用了一阵,现在我只用zsh。
没有向下兼容意味着要放弃一笔遗产,从这一点来说,fish的优势还不够大。
【 在 hgoldfish 的大作中提到: 】
: fish 支持从浏览器里面配置这一点吊打了其它几个 shell,是我这种小白的救星。
:
--
FROM 58.214.200.*
是有,不过到目前为止我只遇到过一次必须用bash执行的脚本。
【 在 doggeddog 的大作中提到: 】
: zsh 对bash也有不兼容的地方
: 比如一个list, bash下标从0开始, zsh下标从1开始
:
--
FROM 180.111.50.*
日常操作那些不兼容只是习惯问题。
脚本不兼容不care,反正可以bash执行。
主要是source xxxenv的需求,当然现在很多也逐渐支持fish了。
【 在 RuralHunter 的大作中提到: 】
: 当然,还是有一些不兼容,例如你说的export。但fish支持bash的即时的环境变量设置,例如:
: PAGER=cat git log
: 命令行够用了。所以不兼容的几个基本都是你很少在命令行用到的,写在脚本里的话直接标明bash就行了,也没必要搞兼容。
: ...................
--
FROM 180.111.50.*
bash的问题一抓一大把,不缺这两个。
但如果抛掉bash这个历史包袱,那就必须做的远比bash好。
现实是连powershell都这个死样,别说fish了。
bash现在不是单纯的一门语言,而是一个生态。
生态的改朝换代,不是靠语言层面的这种小优势就能颠覆的。
【 在 fanjiyouyi 的大作中提到: 】
: 刚去看了下fish官站
: 发现
: Event handlers
: ...................
--
FROM 180.111.50.*
我觉得这就有点吹毛求疵了。bash脚本基本都是基于输出cut来cut去的,有些脚本写的,换个locale就跑不了呢。
另外fish语法自然嘛...我觉得bash的语法就很不自然,很别扭,但被迫学会了,所以只要是跟bash一样的语法那就是自然。
fish的语法跟bash很像,但又有很多小改动,这种我就很不喜欢。要么就干脆完全不一样整体重新设计。要么你就容忍那点小问题跟bash保持一致。这种99%一样1%不同的部分就是很烦人的。python 2.x到3.x,print要加个括号就让我烦躁了好多年呢。
fish也有个依葫芦画瓢的oh-my-fish嘛,从github的历史来看诞生时间只比oh-my-zsh晚了14天。zsh和fish都是user friendly interactive shell,都不是用来写脚本的。但zsh不用学抄起來就可以用,偶尔遇到问题再去google。fish还有个启动门槛,虽然这门槛很小,但在两者差不多同时诞生的状态下,这就是拉开差距的关键因素。从这个角度来说,我觉得是zsh的零启动门槛首先获得了更大的用户数,然后才推动了oh-my-zsh的繁荣,然后又反哺了zsh率先完成了闭环。你说的oh-my-zsh名气大只是结果,并不是原因。
【 在 Dieken 的大作中提到: 】
: 向下兼容的不够好,脚本并不通用。help xxx 没有,type 命令选项不一致,未定义的数组展开居然是个空字符串而不是空,bash和fish的which出来命令的路径,zsh居然出来同名函数的定义…… type -p在 bash和fish都是输出路径,在zsh里输出一句话,bash和fish里和命令同名的alias不会破坏自动补全,zsh里就不行,还有 zsh 里有 xxx 别名时,定义 xxx() 函数会来一句报错……
: 其实用 zsh 多只是因为 oh-my-zsh 名气很大,很少人用 zsh 写脚本。
: fish 没历史包袱,语法自然,开箱即用,实乃居家旅行必备,脚本用 bash,标准,交互用 fish,方便,两全其美。
--
FROM 180.111.50.*
powershell我看都没看过...
win只是游戏机...
而且现在我很多游戏都在linux下玩了...
【 在 adoal 的大作中提到: 】
: PowerShell的语言给我的第一感觉是:
: 你把这货叫shell语言?明明是个S#……
:
--
FROM 180.111.50.*
我没说缺点呀,我说的是另一炉灶光好一点是没用的,需要做的远比前一代好。
【 在 leadu 的大作中提到: 】
: 那“ 现实是连powershell都这个死样”具体的缺点是指?
:
--
FROM 180.111.50.*
简单的说就是要么你先去看一眼它的语法了解下,要么你抄起來就用遇到问题再google。
后者的频率有个阈值,超过阈值就会给人挫折感,然后要么还是去看一遍语法,要么就直接放弃。反正可用的东西一大把,又不是少了你就玩不转了。
zsh就不存在这种问题。zsh可以抄起來直接当bash用,遇到问题要google的频率跟你直接用bash也相差无几。这个过渡顺滑的程度就是fish被zsh甩开的主要原因。谁不知道fish更好,包括那个powershell,我看都没看ps光看宣传就知道它比bash好很多,so what?
【 在 hgoldfish 的大作中提到: 】
: fish 的启动门槛是指什么呢?
:
--
FROM 180.111.50.*
原因其实就一个,违背了KISS原则。
Linux下面10行内bash,10行外python,要什么powershell。
铁杆软饭和linuxer一般是不兼容的。很多时候根本就不是技术问题,而是世界观问题。
【 在 adoal 的大作中提到: 】
: 想起以前在知乎上有个问题,大致是问PowerShell出来开源且跨平台版意味着什么。
: 我的回答是,PowerShell从管道传对象的设计是对各种远古shell的降维攻击,但是
: 作为一个日常用的shell,大部分Linux老手是不会对它感兴趣的,因为手感相差太大,
: ...................
--
FROM 180.111.50.*