惯例前言:
吉德林法则:把难题清清楚楚地写出来,便已经解决了一半。
从 16 年使用 cocoapods 管理项目以来,便开始了 mac 终端的使用。从此开始与它作斗争,不知道小伙伴们有没有这样的感触:“终端环境就没有正常过”。而且习惯了可视操作后,对计算机基础不扎实的我,终端总是显得不那么友好,不知道它做没做我让它做的事,不知道它做的对不对。。。。。。(咱也不知道,咱也不敢问)
一直都是用到什么就查,出问题了就改。所以终端总体给我的感觉就是“真 JB 复杂,屡不清它的条条框框”。
本着“知其然知其所以然”的原则,加上最近对脚本语言莫名的感兴趣,再加上公司业务需求中需要用到 python、shell 脚本。就认认真真的对常用的终端工具以及终端环境做了梳理工作。这个过程中感谢柱哥和不知名大佬“diudiutang”。
工欲善其事必先利其器
1. 下载 iTerm 2 代替系统终端(内存小的朋友不需要担心,它只有 8M多。)
2. 当前用户最好设置成 root 用户,这样可以尽可能的减少没有权限(permission denied)带来的问题。
3. 下载并安装 Homebrew、RVM、Ruby、zsh、oh-my-zsh、xcode-command-tools等。
“器”之详解
iTerm 2:https://www.iterm2.com/(作用、优势可见官网,比我说的好)
zsh:Zsh也是一种shell(命令解析器)
oh-my-zsh:是为 zsh而生的。有了oh-my-zsh这个开源项目之后,让zsh配置降到0门槛.而且它完全兼容 bash。配合 iTerm 2 使用可以让你的终端骚到起飞。
xcode-command-tools:(提供一些基础工具) 终端执行:“xcode-select --install”安装。但我对它并不是特别的了解,求指点。
Homebrew:https://brew.sh/
是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。Homebrew 的默认安装目录为 /usr/local,所有通过 brew 安装的程序都会默认安装到 /usr/local/Cellars/程序名/版本号/目录下。
安装命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
常见命令行:
$ brew --help #简洁命令帮助
$ man brew #完整命令帮助
$ brew install git #安装软件包(这里是示例安装的Git版本控制)
$ brew uninstall git #卸载软件包
$ brew search git #搜索软件包
$ brew list #显示已经安装的所有软件包
$ brew update #同步远程最新更新情况,对本机已经安装并有更新的软件用*标明
$ brew outdated #查看已安装的哪些软件包需要更新
$ brew upgrade git #更新单个软件包
$ brew info git #查看软件包信息
$ brew home git #访问软件包官方站
$ brew cleanup #清理所有已安装软件包的历史老版本
$ brew cleanup git #清理单个已安装软件包的历史版本
程序安装路径及文件夹功用:
-bin #用于存放所安装程序的启动链接(相当于快捷方式)
-Cellar #所有brew安装的程序,都将以[程序名/版本号]存放于本目录下
-etc #brew安装程序的配置文件默认存放路径
-Library #Homebrew 系统自身文件夹
–Formula #程序的下载路径和编译参数及安装路径等配置文件存放地
–Homebrew #brew程序自身命令集
RVM:
Ruby版本管理器,是一个命令行工具。全称 Ruby Version Manager,可以用来多版本 Ruby 环境的管理和切换。
下载及安装命令:
$ curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ rvm -v # 查看版本号,确保安装成功。
常见命令行:
$ rvm info #查看rvm信息
$ rvm list known #列出RVM所支持的所有Ruby版本的信息
$ rvm list #列出已安装的Ruby版本
$ rvm install 2.4.0 # 安装 ruby-2.4.0
$ rvm remove 2.4.0 #卸载 ruby-2.4.0
$ rvm --default use 2.4.0 #设置2.4.0为默认版本
$ rvm default #通过default可以快速回到默认版本
$ rvm ruby-2.4.0 #切换2.4.0为当前使用版本
$ rvm 2.4.0 #同上
Ruby:
ruby 是一种动态语言(类似 python), 日本的松本行弘创建于1993年。但我们这里常说的 ruby指的是 ruby环境。我们 Mac的终端上自带 ruby环境。 ruby软件包被称为gem,其中包含了 ruby应用或库。(粗俗的讲,gem 就是运行 ruby环境上的软件包)
RubyGems:
RubyGems 是一个包管理框架,提供了 ruby社区 gem的托管服务,用于方便地下载、安装和使用ruby软件包。会伴随 ruby环境的安装而存在,就是用来操作 gem 的。命令行由 gem
开头。举例:
# 通过 RubyGems 去 ruby托管平台 上找到 fir-cli、cocoapods 安装
$ gem install fir-cli
$ gem install cocoapods
$ gem install fastlane
不知道怎么命名的杂乱部分
这块儿内容主要会写一些我自己遇到过的难题以及猜测和解决思路,大概就类似于批注的东西,不一定正确但是应该可以加深对这块儿内容的理解。
我自己想的!不一定正确!不权威!
认识汇总:
“usr/bin” 经常会看到路径中有这两个词,我想来一定是有什么特殊意义在的:usr - Unix System Resource、bin - 二进制文件。
Homebrew 我将它理解成 macOS可视系统下的 App Store。上面我的也说过了它的安装路径默认是 usr/local,并非安装在在某一“用户”下。测试后,也发现切换用户后都可以在终端对 brew进行使用,且由 brew install 安装的软件包也可以使用。
RVM 它是一个“专款专项”的软件包管理工具,只负责对 Ruby 环境的下载、切换等管理操作。默认安装路径 /Users/用户名/.rvm/bin/RVM,可以看到这玩意儿的安装路径是在某一用户文件目录下。同样测试后,发现更换用户后将不能对 rvm 相关命令行进行操作,且提示 没有发现 rvm。
Ruby 它既是一个门语言,也是一种环境。这东西一度让我懵逼,搞不清楚该如何定义它。自我总结:使用 ruby 语言写的软件包称为 gem包,可以通过 RubyGems这个包管理框架进行管理。gem包是需要 Ruby 环境支持才能够执行。
RubyGems 是一个包管理框架,提供了 ruby社区 gem的托管服务,用于方便地下载、安装和使用ruby软件包。值得一说的是,本地多 Ruby 版本的情况下,gem包的安装使用情况。例:
ruby 2.4.0 环境下执行:“gem install fir-cli --no-ri --no-rdoc”。此时 fri这个包是被下载安装路径为:/Users/用户名/.rvm/gems/ruby-2.4.0/bin/fir
执行 rvm 2.5.0,切换至 ruby 2.5.0版本。执行 which fir 此时会有两种情况:
第一种:报错,报错信息是没有找到 fir。此时,说明只有在安装了此 gem包的 ruby 2.4.0环境下才可以使用“fir”。
第二种:/usr/local/bin/fir。一个在用户路径以外的路径(和上面讲的 brew安装的软件包路劲很相近,同理此时的 gem包不但可以跨 Ruby 环境使用,也可以跨用户使用)。
至于到底为什么会有第二种的情况的发生,我只找到了一种情形:gem 包安装的时候执行“sudo gem install -n usr/local/bin fir-cli --no-ri --no-rdoc” 此时,被安装的 gem 包的执行文件会在用户路径下一份,且在 /usr/local/bin 下一份。所以我觉得后者在实际工作中能带来很多便利。
坑
坑一:系统自带 Ruby 2.3.7 版本。自己安装了 RVM,随后安装了 Ruby 2.4.0。且通过 RVM 设置 2.4.0为默认使用的版本。但是每次打开的终端后,都会变成 Ruby 2.3.7 环境。
解:这是因为终端环境变量的优先加载顺序,在终端中用 echo $PATH 可以查看。通过 RVM 设置默认,并不能会更改到终端环境变量的加载顺序,且每次打开 mac 终端,环境变量会重新计算的。所以想要彻底更改这个问题,只需要手动更改配置文件即可。用zsh的话,配置文件在 ~/.zshrc,如果默认用系统自带的bash,配置文件在 ~/.bashrc。
坑二:安装命令行时的权限问题
报错信息:ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
解:sudo gem install -n /usr/local/bin fastlane
叨叨
果真是天下文章一大抄。在梳理这块儿内容查资料的时候,发现太多都是直接复制粘贴别人的总结,一点自己的内容都没有加进去,把鲁迅先生的“拿来主义”运用的淋漓尽致🌚。
献给小白
$ gem *** # 使用 RubyGems(gem包管理框架)对 某gem包 进行操作
$ rvm *** # 使用 RVM(Ruby版本管理器)对 某ruby环境 进行操作
$ brew *** # 使用 Homebrew(软件包管理工具)对 某Unix软件包进行操作
$ bury *** # 目前只是用过 bury -v