Shell 和他的設定檔,以及 dotfiles
又是本文檔最常說的一句話,沒啥文章能簡潔有力的介紹,老話一句,能用一句話講完的就不要寫成一篇文章。
Shell: bash/zsh
Shell 是和作業系統互動的介面,所以人如其名,他是使用者操作作業系統所接觸到的那層「殼」。
而 Bash 和 Zsh 都是 Unix shell,Zsh 是 Bash 的超集,提供了更多現代特性和更好的定制性,同時保持與 Bash 的基本兼容性。由於 Zsh 是超集,所以本文只講 Zsh。
Shell 設定檔
.zshenv
- 所有 Zsh 會話啟動時載入,設置全局變量。.zprofile
- 登錄 shell 啟動時載入,設置登錄會話變量。.zshrc
- 每個交互式 shell 啟動時載入,設置別名、函數等。.zlogin
- 登錄 shell 啟動後載入,執行登錄後設置。.zlogout
- 登錄 shell 退出時載入,清理工作或保存狀態。
基本上我們只會修改 .zshrc
,根據此 reddit 討論,.zshenv
裡面的設定必須是「不拖慢 shell、需要被所有子進程繼承的變量」,因為所有會話都會載入他,而 .zshrc
只有交互式會話才會載入。
zshrc
簡易列出 .zshrc
可能包含的設定:
- 設定別名:簡化常用命令,例如 alias git-rm-merged="git branch -d `git branch --merged | grep -v '^*' | grep -v 'main' | tr -d '\n'"
- 設定函數:創建自定義命令或自動化任務
- 設定環境變量:如新增系統路徑
- 設定主題和插件:可以設定 Oh-My-Zsh 等框架
Dotfiles
在 Unix 系統中大部分的設定檔都以 .
開頭,所以稱作 dotfiles。管理 dotfiles 可以讓你同步和備份各種設定,都不用特別說什麼,光是回想每個語言、套件、IDE、工具函式花了多少時間安裝和設定就知道他有多重要。Github 上有一堆 dotfiles 可以參考,經過簡易研究後暫時選擇 holman/dotfiles,包含各種 out-of-the-box 設定以及 brew 安裝。
想尋找更多 dotfiles 除了在 Github 上直接搜尋以外也可以找 awesome dotfiles,或者在 Your unofficial guide to dotfiles on GitHub 查看更多受歡迎的設定檔,或者使用我的設定檔。