将日常 shell 切换到 fish 将会遇到那些坑? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Feiox
V2EX    程序员

将日常 shell 切换到 fish 将会遇到那些坑?

  •  
  •   Feiox
    feiox 2015-11-16 14:16:17 +08:00 9289 次点击
    这是一个创建于 3619 天前的主题,其中的信息可能已经有所发展或是发生改变。

    弃 bash 转 zsh 只因补全,现在想转 fish 还是因补全!

    那么,平时 shell python 脚本执行依然用 bash ,只是在 iterm2 中使用,会不会有些坑呢?
    会不会有些命令会有不兼容的问题呢?

    18 条回复    2015-11-17 18:21:47 +08:00
    Feiox
        1
    Feiox  
    OP
       2015-11-16 14:16:42 +08:00
    据说, fish 是 90 后专用 fish 。。。。。。
    windyboy
        2
    windyboy  
       2015-11-16 14:22:05 +08:00
    环境变量
    weakish
        3
    weakish  
       2015-11-16 14:37:11 +08:00
    > 平时 shell python 脚本执行依然用 bash

    Python 的 subprocess 貌似是 /bin/sh ,一般也不会把 /bin/sh 软链到 fish

    > 会不会有些命令会有不兼容的问题呢?

    会。
    nekoyaki
        4
    nekoyaki  
       2015-11-16 16:04:33 +08:00
    bash 里预先写好的环境变量可能继承不过来,需要你自己想办法,比如在 fish 里写,或者先启动 bash 再调用 fish 。
    再就是如果你 alias 了命令, fish 里是继承不了的,只能自己写 fish 的 function 。
    另外有些命令的特定参数形式,在 fish 下不能用,比如 golang 的一些命令;但是大多数问题不大。
    yujia
        5
    yujia  
       2015-11-16 16:18:55 +08:00
    你需要自己实现一下 sudo !!
    还有就是 $$ 不是进程显示 pid 了
    再还有就是执行一条命令 bash 里面是``扩起来,在 fish 里是圆括号。
    如 chomd `whoami` 你得改成 chmod (whoami)
    leopku
        6
    leopku  
       2015-11-16 17:31:06 +08:00
    补全何须 fish

    推荐 prezto
    harry890829
        7
    harry890829  
       2015-11-16 17:33:19 +08:00
    我用 zsh 主要原因还是因为……在 shell 下打文件名,终于不用区分大小写了
    lightening
        8
    lightening  
       2015-11-16 17:38:01 +08:00
    一些 hijack shell 命令的工具不能用了
    wikinee
        9
    wikinee  
       2015-11-16 17:42:27 +08:00
    @leopku 你们说的我都没听过,我就 zsh 还有时候会有奇怪的问题( ubuntu )下,后来发现 ubuntu 也不都是 bash ,还有可能是 dash 。。。
    fityme
        10
    fityme  
       2015-11-16 17:52:30 +08:00
    只在 shell 里用,没坑。唯一可能会坑的是,某些偏门的脚本和命令。你需要同时看懂 bash 和 fish 然后做修改和迁移
    dogsteve
        11
    dogsteve  
       2015-11-16 18:21:33 +08:00
    fish 的报错信息(error)和 bash 的不一样,有时候可能导致解决某个问题的时候 google 无力,浪费大量时间。
    littleqz
        12
    littleqz  
       2015-11-16 23:54:00 +08:00
    因为语法与 bash 的差异,有时候会出现奇怪的错误,比如如果服务器上用户的默认 shell 是 fish 时, ssh-copy-id 会报错,需要 chsh -s /bin/bash 才行。不过我用 fish 也有一年多了,除了前面这个毛病以外,其他倒是感觉挺好的(其实主要是补全啦, zsh 那个补全插件我也试过,感觉还是 fish 的补全比较得劲,可能是习惯了吧 :)

    建议 LZ 直接用就是了,觉得坑多不习惯换回去就是了, zsh 也蛮好的嘛。
    littleqz
        13
    littleqz  
       2015-11-17 00:00:09 +08:00
    另外提醒一下: 如果用 fish 的话不要在配置文件中使用太多的 alias ,速度很慢!见 [这里]( http://sudotry.com/speed-up-fish-shell-startup.html)
    hei1000
        14
    hei1000  
       2015-11-17 00:43:29 +08:00
    1. config 里面很多语法和 bash 不一样不兼容
    2. 编译涉及到环境变量特别是 /etc/下面的环境变量会失败,而且不会告诉你是 fish 的问题
    hei1000
        15
    hei1000  
       2015-11-17 00:46:26 +08:00
    @hei1000 3. 命令行里面一般程序调用可能要加参数引号或方斜杠的问题
    DuckJK
        16
    DuckJK  
       2015-11-17 08:19:09 +08:00
    原来用 fish 无法开机,后来换了个 SHELL 好了(也可能是别的原因)。
    skl
        17
    skl  
       2015-11-17 13:22:24 +08:00
    使用 oh-my-fish 吧,解决一大堆兼容问题
    xcodebuild
        18
    xcodebuild  
       2015-11-17 18:21:47 +08:00
    记得把 vim 和 emacs 里的 shell 都设置成 bash ,不然会有各种奇奇怪怪的兼容问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5562 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:23 PVG 15:23 LAX 00:23 JFK 03:23
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86