MacOS的小结及终端shell的选择和相关配置全过程(zsh+iTerm2+powerline全解)

小结

至于写这篇文章的目的最主要是对于一个之前用Ubuntu的程序员换了MBP之后的等等不习惯,对于之前在Ubuntu上的一些习惯等等在换了macOS在之后变得很不习惯,需要一定时间去适应并且对于一些环境等等的配置需要去爬各种文章慢慢研究。特此总结一文仅供大家方便。另一篇文章请查看《mac下的python相关环境的搭建》。两篇文章足够将一台新的mac配置成得心应手的新工具。
本篇文章立足于mac的终端的配置和对其shell的小结,让从ubuntu更换到mac的童鞋们快速理解各种shell和快速上手新的终端。


一、macOS的独特优势和相关内核

大家都知道对于一个程序员来说,效率是最重要的。可能大家接触的第一个操作系统就是windows了吧,虽然说从小的操作习惯和友好的交互界面让windows深入民心,但是对于打代码来说实在是有些笨重(我不是在黑windows,也不是再说不能用windows来编写代码,对于从visual studio 6.0入门1001界的我,对于windows也有深深的感情)。可能过渡期大家用过在虚拟机上安装redhat或者Ubuntu亦或是,为了习惯相应的操作习惯单独单独将系统换成了Ubuntu Kylin,linux对于开发者来说是非常友好的,不管是优雅简洁的界面还是已经集成好的环境,相对于在windows上下载压缩包,cmd各种,然后path各种要简单太多了。但是用的时间长了,对于虚拟机来说,硬件是硬伤,在windows上docker一个容器环境还是相对不稳定,卡死(后续也许会被硬件弥补)、异常问题还是频频发生,一度让我非常奔溃,对于单独安装linux来说,拓展功能的不全面,相关服务的支撑还是他的一个缺点之一。弥补这两个缺陷的解决方案就是macOS了(我没有收苹果的广告费),第一mac将硬件的性能发挥的极致,第二,对于很多软件支撑来说,没有那么笨重,轻便易用,简单明了,可以说对于一个效率至上的程序员来说非常友好了(当然价格也非常“友好”)。
咳咳,不好意思,有点跑题,当然这篇文章不是来捧苹果有多好多好的,而是帮助大家的操作习惯快速过度的(时刻提醒自己)。

二、shell

好了,打开终端敲入下面代码查看相关内核shell

cat /etc/shells
shells.png

可以查看出所有shell。提到shell,对于长期用linux的童鞋来说,已经不陌生了,何为shell,我们常常打开终端敲入相关命令,shell就是与系统进行交互的工具。我们可以cat查看到很多shell,bash、csh、ksh、sh、tcsh、zsh。对于一台mac来说,在我看来终端的优势并不是速度,而是扩展,zsh作为一款拓展功能相当强大的shell拥有很强大的拓展和可以定制的特点,成为作为mac系统强大优势的原因之一。

三、快速配置适合自己的zsh

上面截图已经看到了,很多同学可能惊讶我的终端为什么和你的不一样?答案就是我用的是iterm2+zsh+powerline,这个已经是美化过的了,其实如果你直接打开终端应该是这样的......


bash.png

这就是为什么要配置zsh的原因了,命令行、关键字、用户名混为一谈看时间长头都晕了,EXM?这这这?这就是你所说的mac系统优势很大?当然不是,第一,原生的终端拓展功能欠佳;第二,我们清楚地可以看到两个使用的shell也不一样之前的是zsh,而第二张图是bash。bash肯定不陌生,Ubuntu所用的shell就是bash,所以这就是我所一直强调的,更换mac以后,一定要让他得到充分的利用,zsh是你一个不二的选择。
好了,我已经解释的很全面了,下面快速配置习惯的mac终端。

1.安装iTerm

这个很简单,去appstore中直接搜索iTerm2下载、认证、安装、好了,以后可以告别mac原装的终端了。

2.安装zsh

打开终端可以发现我们的shell还是使用的bash。
对于mac来说,shell中也是含有原生的zsh的,切换只需要敲入zsh,那么终端就进行切换了,再次敲入bash,那么换回bash。但是原装的zsh不是特别好用,那么我们进行安装oh-my-zsh

终端敲入命令进行安装

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
oh-my-zsh安装成功.png

配置配置文件,之前的bash配置文件是bash_profile可以通过命令

vi ~/.bash_profile

进行查看和修改,在这个配置文件中配置了环境变量,终端拓展,功能拓展包括主题等等等
如,这个文件中配置了mysql的系统环境变量的路径。在之后进行拓展时可以直接进行添加和修改。


bash_profile中配置了mysql的系统环境路径.png

但是,我们要将shell换成zsh那么这个配置文件就需要进行做相应的修改,说白了就是:
当我们使用bash作为终端shell的时候,系统变量路径需要配置在bash_profile中,而在使用zsh时则需要配置在另外的配置文件zshrc中。如果用vim用的不是特别习惯以后可以用open命令打开配置文件。

open ~/.bash_profile

创建配置文件

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

更改zsh为默认shell
这样以后打开终端默认就使用的是zsh为shell了

chsh -s /bin/zsh

此时再次打开终端已经发现我们的终端已经和之前大不相同了,但是感觉其实跟之前改进并不是特别多我们目标是改进终端美化终端,那么下一步。
我们可以先查看zsh中有什么主题配色的搭配

cd ~/.oh-my-zsh/themes
ls

oh-my-zsh主题.png

agnoster.zsh-theme是其中比较好看的,大家可以去github上去查看相应主题并可以下载新的主题,zsh默认的是robbyrussell.zsh-theme
https://github.com/robbyrussell/oh-my-zsh/wiki/themes
打开zshrc配置文件进行查看,直接在这里修改就好,我这里用的主题是新下载的powerlevel9k/powerlevel9k.zsh-theme

open ~/.zshrc
zsh相关配置-主题配置.png

修改之后需要编译才能将编译文件的修改执行成功

source ~/.zshrc

到此zsh就算配置成功了。下面继续,我们要想要清晰明了的层级目录显示需要安装powerline插件。

3.安装powerline

好了在执行此步之前,请确认你已经安装python包,如果没有,请转移相对应的那篇《mac下的python相关环境的搭建》文章进行查看。python2或者python3都可以,在mac系统中有默认的python2.7,但是我还是建议你用homebrew重新安装python2和python3(目录会发生改变,便于以后配置)

pip3 install powerline-status

由于我的python是homebrew安装的所以目录比较好找,cd一下一般目录都在这里,大家一个一级一级cd进去查找,不要找错,有可能我的和你们略有不同。

/usr/local/lib/python3.7/site-packages/powerline/bindings/zsh/

或者直接用命令(这个命令有可能会找到原来的python3的安装目录,因为homebrew进行的安装的目录时进行重构的,所以这个方法不建议,建议自己一层一层cd的去找)

pip3 show powerline-status

查找到这个目录下的powerline.zsh,将这个文件目录复制下来即/usr/local/lib/python3.7/site-packages/powerline/bindings/zsh/powerline.zsh打开zshrc配置文件,将地址粘贴进去,前面加.和空格就与zsh进行绑定了。

powerline配置到zsh中,地址前面有点和空格不能少.png

修改后别忘了编译

source ~/.zshrc

powerline里面需要相应的字体 去github上下载https://github.com/powerline/fonts
cd进./install.sh所在目录执行

./install.sh

安装好进入iterm2的Preferences里进行修改

iTerm更改powerline所需相应的字体.png

这样层级目录的显示就完成了,我们还可以进iterm里面设置终端的背景颜色,我使用的Color Presets是Solarized Dark。

4.设置关键字高亮

如这篇文章所讲,zsh拥有很多拓展功能,会让你的终端用起来更得心应手。
安装关键字高亮终端执行

brew install zsh-syntax-highlighting

打开zshrc配置文件追加

##关键字高亮
source $ZSH/oh-my-zsh.sh
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
#很多教程只有上边那两行,但是我们设置好编译后发现关键字还是没有高亮,这是因为iTerm终端自身的原因,加上后面两行代码就可以将zsh中主题的颜色加载出来了
export CLICOLOR=1
export TERM=xterm-256color

好了这样mac的超级终端也就设置完毕了,我们可以继续去查一些zsh的拓展进行安装,不过插件越多,打开终端的速度也就越慢,适当安装,会大幅增加工作效率。谨以此篇文章献给入坑macOS的童鞋们,相信通过这两篇文章你会对mac系统会更快的上手。另外请参考我的另外一篇文章《mac下的python相关环境的搭建》
Have Fun!!

纯原创文章,对各路大神的方法进行总结和归并,希望给大家带来更多便利。

peterp
July 2018

附上完整配置文件

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
export ZSH="/Users/zhangzhenyu/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="agnoster"

# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"

# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"

# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"

# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13

# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS=true

# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
  git
  zsh-autosuggestions  # 命令提示
  zsh-syntax-highlighting  # 命令高亮
  autojump  # 记录跳转动作
)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment
# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi

# Compilation flags
# export ARCHFLAGS="-arch x86_64"

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# 虚拟环境
export WORKON_HOME=~/workspaces
source /usr/local/bin/virtualenvwrapper.sh

# mysql数据库
PATH=$PATH:/usr/local/mysql/bin

# jsonnet-bundler
export PATH=$PATH:$(go env GOPATH)/bin

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


alias python="/usr/bin/python2"

. $HOME/.pyenv/versions/3.8.2/lib/python3.8/site-packages/powerline/bindings/zsh/powerline.zsh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Linux命令学习 记录小白学习Linux的过程。 常用命令 man命令 常用工具命令 man命令是Linux下的...
    吃蘑菇De大灰狼阅读 2,609评论 1 14
  • 前言 在正式介绍iTerm2之前,需要我们了解Mac自带的终端Terminal,所以本文开始会先介绍Termina...
    风吟露气阅读 5,162评论 1 3
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,310评论 0 5
  • 原文地址 https://zh.opensuse.org/SDB:Zsh 1 为什么要使用 Zsh? 为什么要使用...
    独孤星夜的孤独等待阅读 3,713评论 1 1
  • 宇哥,肯定不会这样。 到了毕业季了,宇哥还没回来。去年宇哥的状态,应该是我现在的状态。我走偏了,万科的面试心里没有...
    dec41dfda297阅读 318评论 0 0