MacOS Catalina之Terminal配置


MacOS Catalina之Terminal配置

昨天把MBP格式化,重裝了最新的MacOS Catalina系統,眾所周知,Mac下的Terminal並沒有默認配置ll這樣好用的命令,出於Linux下習慣,就想直接配置下,然后,就遇到了很坑的問題,配置文件死活不生效,每次打開命令行后,都需要source下才可以,真的要人命,具體問題,且聽我細細道來~

MacOS Catalinna之前的環境變量配置

在MacOS Catalina之前,MacOS通常使用Bash作為默認shell。

# Terminal默認Shell為Bash時,Mac系統的環境變量加載順序為:
# 系統級別的環境變量配置 
/etc/profile => /etc/paths
# 用戶級別的環境變量配置
~/.bash_profile => ~/.bash_login => ~/.profile
# Bash Shell本身的配置
~/.bashrc

其中,/etc/profile/etc/paths都是系統級別的環境變量配置,系統啟動時就會加載,后面三個都是用戶級別的配置,這三個用戶級別的配置是按從前往后的順序讀區的,如果~/.bash_profile文件存在,則后面的兩個文件就不會再讀取了;如果~/.bash_profile文件不存在,才會按照相同的規則讀區后面的兩個文件;最后配置文件~/.bashrc則是在Bash Shell打開時自動載入的,並不遵循前面三個用戶配置文件的讀取規則。

環境變量PATH的設置語法:

# 使用冒號作為分隔符
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

全局環境變量設置

MacOS的全局環境變量配置大致有四種方式,需要注意的是,這些文件通常涉及到系統級別環境變量,修改時一般需要root權限。

/etc/paths文件

/etc/paths文件中存放的是一行行路徑信息,只需要在該文件中添加某個目錄的路徑即可配置為全局變量。

/etc/profile文件

/etc/profile文件是全局配置,不管哪個用戶登陸,都會讀取該文件,通常不建議直接修改該文件。

/etc/bashrc文件

/etc/bashrc文件是Bash Shell的全局公有配置文件,通常在該文件中添加系統級環境變量,在Bash Shell執行時,不管以任何方式執行,都會讀取該文件。

/etc/paths.d目錄

通常情況下,不推薦直接對上面三個文件直接修改,原因在於,系統每安裝一個軟件,通常都需要為該軟件配置相應的全局環境變量,如果一直對上面三個文件追加和修改的話,耦合性都太高了,上述三個文件會越來越復雜。

為了便於軟件的管理,通常使用下面的方式進行全局環境變量的配置:

# 在/etc/paths.d目錄下創建軟件對應文件(這里以mysql為例)
sudo touch /etc/paths.d/mysql
# 利用vi編輯/etc/paths.d/mysql文件
sudo vi /etc/paths.d/mysql
# 編輯該文件,鍵入路徑並保存
/usr/local/mysql/bin
# 最后,重新打開Terminal,就可以使用/usr/local/mysql/bin目錄下的mysql命令了

單用戶環境變量配置

~/.bash_profile文件

注意:Bash Shell在以login方式執行時才會讀取該文件(MacOS下,默認以login方式執行),該文件僅僅執行一次,為了使用方便,通常在該文件中設置一些環境變量,例如,設置別名,alias ll='ls -la';設置環境變量,export PATH=/opt/local/bin:/opt/local/sbin:$PATH

注意:Linux系統下通常為~/.bashrc文件,而Mac下為~/.bash_profile文件。

MacOS Catalina下的環境變量配置

繞了一大圈,到現在,我還沒有說清楚自己遇到的問題,就是,在安裝完全新的MacOS Catalina系統后,打開終端之后,習慣性地敲下ll命令,很尷尬,Command Not Found,原因在於,MacOS默認時沒有提供ll命令的,通常需要自己在環境變量中配置alias ll='ls -lF'

MacOS Catalina系統之前,根據前面的內容,完全可以搞定,但是,MacOS Catalina系統上,如果用戶直接在~/.bashrc中進行配置,並不會生效的,原因就在於,MacOS Catalina系統默認的Bash修改為Zsh了。

在MacOS Catalina之前,Terminal默認的Shell類型為Bash,其默認使用的Bash 3.2是基於GPLv2協議的,但是,最新版的Bash已經轉向GPLv3協議,而GPLv3協議對大公司有着更嚴格的限制,這很有可能是Apple不再將Bash作為默認Shell,而是轉向Zsh的原因之一。

Zsh的用戶環境變量配置文件路徑為~/.zshrc,也就是說,我們需要將alias ll='ls -al'等環境變量配置在該文件中才會生效。

# 查看當前系統的Shell類型
echo $SHELL
/bin/zsh
# 新建~/.zshrc文件並追加為ll等關聯命令
alias ll='ls -lF'
alias la='ls -A'
alias l='ls -CF'
# 然后就可以愉快的使用ll命令了

總的來說,遇到問題,不要想當然,應該首先檢查所有的前置條件,這樣才可以盡量避免無用功!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM