安裝 Fish shell 與 NVM
玩過 Bash,抓 Fish 去
何為 Fish shell
fish 是一個 Unix shell , friendly interactive shell 的縮寫,專注於互動應用、易用性和友好的使用者體驗,其設計目的是通過容易發現,記住和使用的方式為使用者提供一套豐富、強大的功能。
fish 於2005年在GNU通用公眾授權條款條款下正式釋出,是一款自由軟體。
更新
- 2017.01.28
- 新增 Facebook Yarn 可能導致 NVM 失效與解決方式
- 調整文章內的部分排版
- 新增 Facebook Yarn 可能導致 NVM 失效與解決方式
- 2016.06.28
- 更新移除 Oh My Fish 和 fisherman 的方法
- 調整 Oh My Fish 和 fisherman 的比較方式
- 新增 fisherman 官方回應 nvm 重啟後沒有載入 Global 套件的原因與解決方法
前言
玩過兩年的 Bash shell 跳槽 Fish shell 有三個主要原因:
- 想換個口味
- 小眾市場 + Open source
- 比 Bash shell 更友善操作,如省略大小字、上下選擇等
更新
2016-06-09 Fisherman 取代 Oh My Fish
安裝 Fish shell
Mac 有三種安裝方式,建議使用第一種方式安裝
- 執行
brew install fish
- 下載 Installer 安裝
- 下載 Fish shell app
其他作業系統可以到 Fish shell 官網 找到對應的安裝方式
調整預設執行的 Shell
執行 chsh -s /usr/local/bin/fish
,重啟 Terminal 可以看到執行畫面變成底下這樣
如果要切換回 Bash shell,執行 chsh -s /bin/bash
重啟 Terminal 既可。
安裝 Fish Shell 插件管理
可以略過,沒有安裝也可以正常使用 Fish shell
什麼是 Oh My Fish / fisherman 呢?它就像 Oh my zsh 之於 Zsh shell,提供 Fish Shell 更多的 Theme、Framework 等。
Oh My Fish 與 fisherman 選擇哪一個安裝呢?以下我做一個簡易的分類
1 | - Oh My Fish: 能接受開啟 Terminal 速度慢 + 安裝 plugin 既可使用 |
fisherman 與 Oh My Fish 的比較:
fisherman | Oh My Fish | 原因 | |
---|---|---|---|
載入速度 | 勝 | fisherman 使用 function 方式載入 plugin, Oh My Fish 則在開啟 Terminal 時載入所有 安裝的 plugin | |
套件資源 | 勝 | fisherman 除自身的 plugins 外,也能夠安裝 Oh My Fish 所有 plugins,但可能需要安裝 其他 plugin 才可正常使用 |
安裝 NVM
這段主要提供給在開發 Node.js 又想使用 Fish shell 的朋友們。
特別提醒一點 nvm-fish 作者已沒有再更新,雖然 NVM
可以正常安裝 node,
但會抓不到 NPM
指令。
只安裝 Fish shell
- NVM fish wrapper,照上面依序執行既可
Oh My Fish 版
- 執行
omf install nvm
,安裝 plugin-nvm
- 執行
fisherman 版 (2 ~ 4 步驟參照 NVM fish wrapper)
- 執行
brew install nvm
- 執行
mkdir ~/.nvm
- 執行
ln -s (brew --prefix nvm)/nvm.sh ~/.nvm/nvm.sh
- 執行
fisher nvm
,會安裝 edc/bass 和 fisherman/nvm
- 執行
使用 fisherman 的小提醒
- 使用
npm install -g
安裝的套件,重啟 Terminal 後會失效,暫時解法是下npm
既可。推測是因為 fisherman 摘用 function 載入造成重啟失效。 - 承上 fisherman 官方回應,原因是 fisherman 使用 function 方式載入導致
npm
屬於被動觸發,而 fisherman 正是以此方法取得快速開啟 fish shell 的效果。如果仍希望使用 fisherman 又希望能一開啟就取得 Global 的套件,可以連到 fisherman 官方回應 裡面有說明解決方法。
- 使用
NVM 與 NPM 資訊補充包
- 其他 Fish 安裝 NVM 的方式可以到 NVM 的 Github 上找到。
- 若使用 Facebook 的 Yarn ,強烈建議使用
npm install yarn -g
安裝,而非官方手冊寫得透過 Homebrew 的方式,原因是我用 Homebrew 的方式安裝過 Yarn 兩個版本(0.17.8 與 0.19.1),安裝 0.17.8 版本時一切正常,但安裝到 0.19.1 版本會發現 Homebrew 在安裝 Yarn 之前會另外安裝 node 最新的版本,而這個動作會導致原本使用的 NVM 失效(此時移除 Yarn 也無效,因為此時的 node 已經和 NVM 沒有關係)。
- 若已經透過 Homebrew 安裝到 0.19.1 版本並想移除,可以下brew uninstall yarn node nvm
,然而再重新安裝 NVMbrew install nvm
,此時 NVM 就回來了!
參考資料
- 文章標題: 安裝 Fish shell 與 NVM
- 文章連結: https://blog.ivanwei.co/zh-tw/2016-06-07-bash-to-fish/
- 版權聲明: CC BY-NC-ND 4.0