了解到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

切换到ZSH以后遇到的坑相关推荐

  1. Antd Tabs切换时状态遗留问题避坑

    destroyInactiveTabPane 被隐藏时是否销毁 DOM 结构 boolean false <Tabs defaultActiveKey="1" centere ...

  2. bash与zsh的切换

    网上冲浪解决问题时,听闻zsh很好用,于是稀里糊涂入坑了,于是记录一下使用zsh过程中遇到的坑和一些常用的命令 安装oh my zsh(安装完成后自动进入zsh界面) sh -c "$(cu ...

  3. Mac终端 bash和zsh切换方法

    切换到bash chsh -s /bin/bash 切换到zsh chsh -s /bin/zsh 注意,切换后需要重启终端才会生效.

  4. Mac终端shell类型bash和zsh切换

    查看shell类型 可以执行命令echo $SHELL,先查看终端类型. bash: /bin/bash zsh: /bin/zsh shell类型切换命令 切换到bash 输入命令:chsh -s ...

  5. MacOS 的 zsh 和 bash 切换

    目录 一.从 `bash` 切换到 `zsh` 1.使用系统自带的 `zsh` 2.使用第三方的 `zsh` 2.1.Clone代码到本地 2.2.备份你已存在的 `~/.zshrc` 文件 2.3. ...

  6. Mac zsh not found jupyter notebook

    zsh是一个很好的终端模拟器,在自动补全上面很好用.但是在初次使用的过程中,发现以前在bash里面的配置文件不能移植过来,解决的办法如下: 打开vim -/.zshrc 加入 source -/.ba ...

  7. bash 判断 os 版本_Kali Linux 2020.3开始用ZSH取代Bash旅程

    在此版本中,Kali Linux团队引入了以下概述的各种新功能. Kali Linux切换到ZSH作为默认Shell 在此版本中,Kali Linux团队开始了从默认Bash shell切换到ZSH的 ...

  8. 阿里云服务器配置开发环境第一章:Centos7.3安装git 和 zsh

    博主的电脑环境是mac,命令工具是iterm2+zsh 1.连接远程服务器 ssh 服务器用户名@你的ip地址 2.安装zsh yum -y install zsh 3.切换到zsh chsh -s ...

  9. ubuntu 18.04安装oh my zsh

    oh My Zsh简介 zsh在bash的基础上有十足的改进,但是zsh配置相对复杂,所以oh my zsh算是zsh的简化配置版 oh my zsh 官网:https://ohmyz.sh/ 查看s ...

最新文章

  1. RESTful编程究竟是什么?
  2. mysql索引无效且sending data耗时巨大原因分析
  3. 安天365第二期线上交流
  4. python 更改输出的颜色_python 输出指定的颜色
  5. 使用Windows10 software center升级版本1909
  6. postman 请求参数为数组及JsonObject
  7. Android 4 学习(20):ActionBar
  8. 【Java】反射、枚举、Lambda表达式
  9. java网上商城外文翻译_英语文献翻译网上商城java.doc
  10. 电导池行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. idea创建springcloud项目_新手向,十分钟快速创建 Spring Cloud 项目
  12. vue 插件(Sublime Text 3 常用插件以及安装方法)(转)
  13. 研究发现,近一半生产容器存在漏洞
  14. 反转字符串的多种方式-经典面试题系列
  15. NVIDIA控制面板打不开
  16. Stata统计学软件
  17. CSU 1725 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆(dp)
  18. kafka2.2源码分析之KafkaChannel
  19. html5 输入用户名和密码登陆网址,360路由器登录网址用户名和密码指南
  20. 医学院交换去计算机学院,第一临床学院成功举办2018年国际医学生SCOPE交换项目...

热门文章

  1. 清理微信浏览器网页缓存的办法
  2. Web课程设计高校物资管理系统
  3. JAVA学习笔记 03 - JAVA语言程序结构
  4. 文件操作eof()的问题
  5. 活动及宣传内容发布审批小程序开发制作
  6. win10系统开启IIS服务
  7. python一般用几个空格表示缩进_Python 就是使用缩进来表示代码块,一般使用几个空格来表示一个缩进_女子礼仪答案_学小易找答案...
  8. 2021最新上海互联网公司排名
  9. 关于String的intern的一个题目
  10. Rabbit的基本概念