2020年2月8日土曜日

fish shell 導入 (殴り書き)

目的


fish shell を人に勧めても、勘所がないと環境作りが大変そうなイメージがあったので、「ここを見て」と言える記事を作ってみました。(書き殴り)

ゴール


下記のような画面になればOK


前提


本記事では、下記の環境を前提としています。
  • macOS
  • ターミナルまたはiTerm
  • Homebrewインストール済み
  • ghqインストール済み

導入


下記コマンドで、fish shell をインストールします。

$ brew install fish # fish をインストール


次に、デフォルトシェルをfishに設定します。

$ which fish
/usr/local/bin/fish
$ sudo vi /etc/shells # which fish の結果を追記
$ chsh -s /usr/local/bin/fish


別ウィンドウでターミナルを起動して、行開始が「 user@pc-name ~> 」のようになっていればOKです。

ドラキュラテーマ


ターミナルの場合


下記のコマンドでターミナル用のDraculaカラーテーマをインポートします。

$ ghq get dracula/dracula-theme
$ cd ~/ghq/github.com/dracula/dracula-theme/
$ open ./terminal-app/Dracula.terminal

下記のようなドラキュラっぽい (薄紫色) ウィンドウが表示されたらインポート完了です。


ターミナルの環境設定から、プロファイルのDraculaをデフォルトに設定してください。
今後、新しいウィンドウを開くときの既定の設定なります。

iTermの場合


下記のコマンドでiTerm用のDraculaカラーテーマをインポートします。

$ ghq get dracula/dracula-theme
$ cd ~/ghq/github.com/dracula/dracula-theme/
$ open ./iterm/Dracula.itermcolors

下記のダイアログが出たらiTermへのインポートは完了です。

iTermsのPreferencesから、Profiles > Colors > Color PresetsをDraculaに変更します。
別ウィンドウでターミナルを起動して、ドラキュラっぽく (薄紫色) なっていればOK


bobthefish


fisherをインストールします。

$ curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish # fisher をインストール

bobthefishテーマを追加します。

$ fisher add oh-my-fish/theme-bobthefish

このままではGitリポジトリのディレクトリだと文字化けしてしまうので、フォントをインストールします。

$ ghq get powerline/fonts
$ cd ~/ghq/github.com/powerline/fonts/
$ ./install.sh

ターミナルの場合


ターミナルの環境設定から、プロファイル > テキスト > フォントをProFont for Powerlineに変更します。

iTermsの場合


iTermsのPreferencesから、Profiles > Text > Font > Change Fontをxxx for powerlineに変更します。(xxxはお好みのフォントを選んでください)

その他

Z


Zコマンドは、一度移動したことのあるディレクトリなら、省略した名前でどこからでも移動できるようになります。

$ fisher add jethrokuan/z
例えば、下記のようにfontsディレクトリに移動したことがあれば、どのディレクトリからでも移動することができるようになります。

$ cd ~/ghq/github.com/powerline/fonts/
$ z font

Visual Studio Code の ターミナル


VSCodeのターミナルでも同様に文字化けするのでフォントを設定する。
Preferences > Settings > Users > Text Editor > Font の Editor: Font Family に「Source Code Pro for Powerline」を追加する。

注意


fish shell に乗り換えた後に、いくつか困ったことがありました。
  • fish は`~/.bash_profile`などは読み取らず、`~/.config/fish/config.fish`を見に行きます
  • bashとは微妙に記法が異なるので注意が必要です。
    例:bash だと `eval $(xxx)` だったのが、fish だと `eval (xxx)`なる。
他にも注意することがあるかもしれないので、今後気づいたことがあれば追記していきます。


以上

「Permission denied (publickey)」

久しぶりにGitHubからクローンしようとしたら

git clone {GitリポジトリのURL}
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

とエラーが出てしまいました。
少し調べたらわかるのですが、本記事はその解決方法を備忘として残しました。

結論としては、下記のコマンドでsshエージェントに秘密鍵を追加したらクローンできるようになりました。

$ ssh-add -K ~/.ssh/{秘密鍵のファイル名}

おそらくmacOSのアップデートか何かで、sshエージェントから秘密鍵が外れていたのかもしれません。(原因不明)

以上