慣例前言:
??吉德林法則:把難題清清楚楚地寫出來,便已經(jīng)解決了一半默穴。
??從 16 年使用 cocoapods 管理項(xiàng)目以來禁悠,便開始了 mac 終端的使用鼓择。從此開始與它作斗爭(zhēng),不知道小伙伴們有沒有這樣的感觸:“終端環(huán)境就沒有正常過”则北。而且習(xí)慣了可視操作后矿微,對(duì)計(jì)算機(jī)基礎(chǔ)不扎實(shí)的我,終端總是顯得不那么友好尚揣,不知道它做沒做我讓它做的事涌矢,不知道它做的對(duì)不對(duì)。快骗。娜庇。。方篮。名秀。(咱也不知道,咱也不敢問)
??一直都是用到什么就查藕溅,出問題了就改泰偿。所以終端總體給我的感覺就是“真 JB 復(fù)雜,屢不清它的條條框框”蜈垮。
??本著“知其然知其所以然”的原則耗跛,加上最近對(duì)腳本語言莫名的感興趣,再加上公司業(yè)務(wù)需求中需要用到 python攒发、shell 腳本调塌。就認(rèn)認(rèn)真真的對(duì)常用的終端工具以及終端環(huán)境做了梳理工作。這個(gè)過程中感謝柱哥和不知名大佬“diudiutang”惠猿。
工欲善其事必先利其器
??1. 下載 iTerm 2 代替系統(tǒng)終端(內(nèi)存小的朋友不需要擔(dān)心羔砾,它只有 8M多。)
??2. 當(dāng)前用戶最好設(shè)置成 root 用戶偶妖,這樣可以盡可能的減少?zèng)]有權(quán)限(permission denied)帶來的問題姜凄。
??3. 下載并安裝 Homebrew、RVM趾访、Ruby态秧、zsh、oh-my-zsh扼鞋、xcode-command-tools等申鱼。
“器”之詳解
??iTerm 2:https://www.iterm2.com/(作用愤诱、優(yōu)勢(shì)可見官網(wǎng),比我說的好)
??zsh:Zsh也是一種shell(命令解析器)
??oh-my-zsh:是為 zsh而生的捐友。有了oh-my-zsh這個(gè)開源項(xiàng)目之后淫半,讓zsh配置降到0門檻.而且它完全兼容 bash。配合 iTerm 2 使用可以讓你的終端騷到起飛匣砖。
??xcode-command-tools:(提供一些基礎(chǔ)工具) 終端執(zhí)行:“xcode-select --install”安裝科吭。但我對(duì)它并不是特別的了解,求指點(diǎn)猴鲫。
??Homebrew:https://brew.sh/
??是Mac OSX上的軟件包管理工具对人,能在Mac中方便的安裝軟件或者卸載軟件。Homebrew 的默認(rèn)安裝目錄為 /usr/local变隔,所有通過 brew 安裝的程序都會(huì)默認(rèn)安裝到 /usr/local/Cellars/程序名/版本號(hào)/目錄下规伐。
??安裝命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
??常見命令行:
$ brew --help #簡(jiǎn)潔命令幫助
$ man brew #完整命令幫助
$ brew install git #安裝軟件包(這里是示例安裝的Git版本控制)
$ brew uninstall git #卸載軟件包
$ brew search git #搜索軟件包
$ brew list #顯示已經(jīng)安裝的所有軟件包
$ brew update #同步遠(yuǎn)程最新更新情況,對(duì)本機(jī)已經(jīng)安裝并有更新的軟件用*標(biāo)明
$ brew outdated #查看已安裝的哪些軟件包需要更新
$ brew upgrade git #更新單個(gè)軟件包
$ brew info git #查看軟件包信息
$ brew home git #訪問軟件包官方站
$ brew cleanup #清理所有已安裝軟件包的歷史老版本
$ brew cleanup git #清理單個(gè)已安裝軟件包的歷史版本
??程序安裝路徑及文件夾功用:
-bin #用于存放所安裝程序的啟動(dòng)鏈接(相當(dāng)于快捷方式)
-Cellar #所有brew安裝的程序匣缘,都將以[程序名/版本號(hào)]存放于本目錄下
-etc #brew安裝程序的配置文件默認(rèn)存放路徑
-Library #Homebrew 系統(tǒng)自身文件夾
–Formula #程序的下載路徑和編譯參數(shù)及安裝路徑等配置文件存放地
–Homebrew #brew程序自身命令集
??RVM:
??Ruby版本管理器猖闪,是一個(gè)命令行工具。全稱 Ruby Version Manager肌厨,可以用來多版本 Ruby 環(huán)境的管理和切換培慌。
??下載及安裝命令:
$ curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ rvm -v # 查看版本號(hào),確保安裝成功柑爸。
??常見命令行:
$ 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 #設(shè)置2.4.0為默認(rèn)版本
$ rvm default #通過default可以快速回到默認(rèn)版本
$ rvm ruby-2.4.0 #切換2.4.0為當(dāng)前使用版本
$ rvm 2.4.0 #同上
??Ruby:
??ruby 是一種動(dòng)態(tài)語言(類似 python)吵护, 日本的松本行弘創(chuàng)建于1993年。但我們這里常說的 ruby指的是 ruby環(huán)境表鳍。我們 Mac的終端上自帶 ruby環(huán)境馅而。 ruby軟件包被稱為gem,其中包含了 ruby應(yīng)用或庫譬圣。(粗俗的講瓮恭,gem 就是運(yùn)行 ruby環(huán)境上的軟件包)
??RubyGems:
??RubyGems 是一個(gè)包管理框架,提供了 ruby社區(qū) gem的托管服務(wù)厘熟,用于方便地下載屯蹦、安裝和使用ruby軟件包。會(huì)伴隨 ruby環(huán)境的安裝而存在绳姨,就是用來操作 gem 的登澜。命令行由 gem
開頭。舉例:
# 通過 RubyGems 去 ruby托管平臺(tái) 上找到 fir-cli飘庄、cocoapods 安裝
$ gem install fir-cli
$ gem install cocoapods
$ gem install fastlane
不知道怎么命名的雜亂部分
??這塊兒內(nèi)容主要會(huì)寫一些我自己遇到過的難題以及猜測(cè)和解決思路脑蠕,大概就類似于批注的東西,不一定正確但是應(yīng)該可以加深對(duì)這塊兒內(nèi)容的理解竭宰。
??我自己想的空郊!不一定正確份招!不權(quán)威切揭!
??認(rèn)識(shí)匯總:
??“usr/bin” 經(jīng)常會(huì)看到路徑中有這兩個(gè)詞狞甚,我想來一定是有什么特殊意義在的:usr - Unix System Resource、bin - 二進(jìn)制文件廓旬。
??Homebrew 我將它理解成 macOS可視系統(tǒng)下的 App Store哼审。上面我的也說過了它的安裝路徑默認(rèn)是 usr/local,并非安裝在在某一“用戶”下孕豹。測(cè)試后涩盾,也發(fā)現(xiàn)切換用戶后都可以在終端對(duì) brew進(jìn)行使用,且由 brew install 安裝的軟件包也可以使用励背。
??RVM 它是一個(gè)“尨夯簦款專項(xiàng)”的軟件包管理工具,只負(fù)責(zé)對(duì) Ruby 環(huán)境的下載叶眉、切換等管理操作址儒。默認(rèn)安裝路徑 /Users/用戶名/.rvm/bin/RVM,可以看到這玩意兒的安裝路徑是在某一用戶文件目錄下衅疙。同樣測(cè)試后莲趣,發(fā)現(xiàn)更換用戶后將不能對(duì) rvm 相關(guān)命令行進(jìn)行操作,且提示 沒有發(fā)現(xiàn) rvm饱溢。
??Ruby 它既是一個(gè)門語言喧伞,也是一種環(huán)境。這東西一度讓我懵逼绩郎,搞不清楚該如何定義它潘鲫。自我總結(jié):使用 ruby 語言寫的軟件包稱為 gem包,可以通過 RubyGems這個(gè)包管理框架進(jìn)行管理肋杖。gem包是需要 Ruby 環(huán)境支持才能夠執(zhí)行溉仑。
??RubyGems 是一個(gè)包管理框架,提供了 ruby社區(qū) gem的托管服務(wù)兽愤,用于方便地下載彼念、安裝和使用ruby軟件包。值得一說的是浅萧,本地多 Ruby 版本的情況下逐沙,gem包的安裝使用情況。例:
??ruby 2.4.0 環(huán)境下執(zhí)行:“gem install fir-cli --no-ri --no-rdoc”洼畅。此時(shí) fri這個(gè)包是被下載安裝路徑為:/Users/用戶名/.rvm/gems/ruby-2.4.0/bin/fir
執(zhí)行 rvm 2.5.0吩案,切換至 ruby 2.5.0版本。執(zhí)行 which fir 此時(shí)會(huì)有兩種情況:
????第一種:報(bào)錯(cuò)帝簇,報(bào)錯(cuò)信息是沒有找到 fir徘郭。此時(shí)靠益,說明只有在安裝了此 gem包的 ruby 2.4.0環(huán)境下才可以使用“fir”。
????第二種:/usr/local/bin/fir残揉。一個(gè)在用戶路徑以外的路徑(和上面講的 brew安裝的軟件包路勁很相近胧后,同理此時(shí)的 gem包不但可以跨 Ruby 環(huán)境使用,也可以跨用戶使用)抱环。
??至于到底為什么會(huì)有第二種的情況的發(fā)生壳快,我只找到了一種情形:gem 包安裝的時(shí)候執(zhí)行“sudo gem install -n usr/local/bin fir-cli --no-ri --no-rdoc” 此時(shí),被安裝的 gem 包的執(zhí)行文件會(huì)在用戶路徑下一份镇草,且在 /usr/local/bin 下一份眶痰。所以我覺得后者在實(shí)際工作中能帶來很多便利。
坑
??坑一:系統(tǒng)自帶 Ruby 2.3.7 版本梯啤。自己安裝了 RVM竖伯,隨后安裝了 Ruby 2.4.0。且通過 RVM 設(shè)置 2.4.0為默認(rèn)使用的版本因宇。但是每次打開的終端后七婴,都會(huì)變成 Ruby 2.3.7 環(huán)境。
??解:這是因?yàn)榻K端環(huán)境變量的優(yōu)先加載順序羽嫡,在終端中用 echo $PATH 可以查看本姥。通過 RVM 設(shè)置默認(rèn),并不能會(huì)更改到終端環(huán)境變量的加載順序杭棵,且每次打開 mac 終端婚惫,環(huán)境變量會(huì)重新計(jì)算的。所以想要徹底更改這個(gè)問題魂爪,只需要手動(dòng)更改配置文件即可先舷。用zsh的話,配置文件在 ~/.zshrc滓侍,如果默認(rèn)用系統(tǒng)自帶的bash蒋川,配置文件在 ~/.bashrc。
??坑二:安裝命令行時(shí)的權(quán)限問題
報(bào)錯(cuò)信息: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
叨叨
??果真是天下文章一大抄撩笆。在梳理這塊兒內(nèi)容查資料的時(shí)候捺球,發(fā)現(xiàn)太多都是直接復(fù)制粘貼別人的總結(jié),一點(diǎn)自己的內(nèi)容都沒有加進(jìn)去夕冲,把魯迅先生的“拿來主義”運(yùn)用的淋漓盡致??氮兵。
獻(xiàn)給小白
$ gem *** # 使用 RubyGems(gem包管理框架)對(duì) 某gem包 進(jìn)行操作
$ rvm *** # 使用 RVM(Ruby版本管理器)對(duì) 某ruby環(huán)境 進(jìn)行操作
$ brew *** # 使用 Homebrew(軟件包管理工具)對(duì) 某Unix軟件包進(jìn)行操作
$ bury *** # 目前只是用過 bury -v