zoukankan      html  css  js  c++  java
  • 切换到ZSH以后遇到的坑

    了解到ZSH的强大以后打算将自己目前使用的bash切换到ZSH。具体ZSH比bash强在那里就不多少了,网上的文章一搜一大把。个人主要是被ZSH强大的自动补全吸引过来的。虽然bash装了bash-completaion以后也有了一定的自动补全能力,但是和ZSH比起来还是差距太大。

    ZSH虽然功能强大,但是配置繁琐,并且shell脚本的语法一向比较奇葩,如果自己定制还需要对shell脚本有一定的了解。本来想用ZSH来节省时间,但是还要花大量时间来配置ZSH无疑会生使众多程序员望而却步。好在github有oh-my-ZSH这个项目,自动把大量的配置给你搞好了,基本上做到了开箱即用。

    具体如何安装ZSH和配置oh-my-zsh就不多说了,请参见https://github.com/robbyrussell/oh-my-zsh

    安装完毕后运行chsh -s /bin/zsh将当前默认的shell切换为zsh。另外需要做的是要将以前~/.bash_profile中的配置复制到~/.zshrc中,这样保证以前在bash中定义的别名、命令等可以继续正常工作。

    虽然说ZSH无缝兼容bash,但是刚开始使用还是遇到了一些坑,好歹都一一解决了。

    编码问题

    当我运行Octopress博客的生成博客命令时,遇到了这个奇怪的错。

    1
    2
    3
    
    $ rake generate
    
    YAML Exception reading 2013-12-15-responsive-menu-by-media-queries.markdown: invalid byte sequence in US-ASCII
    

    看起来貌似是默认编码的问题,ZSH使用的默认编码是US-ASCII,但我期望的是UTF-8。

    ok,查看当前zsh shell下的编码是什么。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    $ locale
    LANG=
    LC_COLLATE="C"
    LC_CTYPE="C"
    LC_MESSAGES="C"
    LC_MONETARY="C"
    LC_NUMERIC="C"
    LC_TIME="C"
    LC_ALL=
    

    由于没设值,所以ZSH就选取了US-ASCII。

    解决办法也很简单,在~/.zshrc中加入以下两行。

    ~/.zshrc
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    export LC_ALL=en_US.UTF-8  export LANG=en_US.UTF-8```然后重新加载zshrc文件并查看编码。$ source ~/.zshrc$ locale
    # Compilation flagsLANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8”
    

    通配符问题

    我又发现如果命令行中有[] *等字符会被zsh优先作为通配符处理,这样导致某些命令会被ZSH错误解析。

    比如:

    1
    
    $ rake new_post[‘a new post’]
    

    这里的[]是ruby语言中的语法,但是被ZSH解析成了通配符,所以报错。解决方法也简单,关闭ZSH的这一特性。

    在~/.zshrc中加入下面一行即可搞定。

    1
    
    setopt no_nomatch
    
  • 相关阅读:
    KDrive 與 Embedded Linux
    windows内存管理初探
    开源方案
    boot time 优化
    psplash
    linux下操纵大于2G文件
    【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
    【转】c++.primer.plus.第五版.中文版[下载]
    【技术贴】魂斗罗坦克Normal Tanks第五关以及第5、6、7、关的LICENCE CODE的查
    【转】奇文共欣赏,疑义相与析:原文转载《电脑维护技巧》(N条举措N条理由)并请大家交流研讨
  • 原文地址:https://www.cnblogs.com/huang0925/p/3631916.html
Copyright © 2011-2022 走看看