【Mac】シェルをfishに変更する

Mac,環境構築

こんにちは、しきゆらです。
今回は、ターミナルのシェルをbashからfishへ変更したので、その方法などをメモしておきます。
シェルに関しては、下記サイト等調べると様々な情報が出てくるのでそのへんで確認してみてください。

  1. シェルとは・・・

シェル(shell)とは、UNIX系OSでコマンド操作の基本的なルールを示すもののことです。

シェル入門

今回は、複数あるシェルの中でもfishというものを導入していきます。


 

fishのインストール

インストールは、Macではおなじみのbrewさんで一発です。

brew install fish

 

規定のシェルを変更する

デフォルトではbashが自動で読み込まれているはずです。
現在の状態で利用できるシェルの一覧は、下記コマンドで確認できます。

cat /etc/shells

 

fishを使うためには、上記/etc/shellsにfishのパスを追記する必要があります。

$ emacs /etc/shells

~~~~~~~~~~~~~~~~~~~~
利用できるシェルのリスト
~~~~~~~~~~~~~~~~~~~~
/usr/local/bin/fish  # ここを追記

なお、fishのパスは下記コマンドで確認できます。

which fish

 

規定のシェルを変更するには、以下のコマンドを使います。

chsh -s シェル名

今回は、シェル名をfishとして実行しました。

これにて、シェルの変更は完了です。

 

プロンプトの変更

デフォルトのプロンプトは「ユーザ名@PC名 カレントパス名>」となっています。
現在のプロンプトは、fishを起動して、fish_promptというコマンドで確認できます。

プロンプトを変更する方法は、「~/.config/fish/functions」に「fish_prompt.fish」というファイルを作り、設定を記述すればOKです。
イメージとしては、規定のfish_prompt関数を上書きすることで変更していく感じです。

例えば、以下のようにしてみます。

function fish_prompt --description 'Write out the prompt'
  echo 'プロンプト: >'
end

関数名はfish_prompt、–descriptionは説明書き。
「  echo 'プロンプト: >’」のところが実際のプロンプト内容です。
これを読み込んでみます。

スクリーンショット 2019-04-17 8.06.36.png

このように、簡単に変更することができます。
シェルの書き方を少し知っていれば、より柔軟な表現ができそうですね。

 

文字の色を変える

echo (set_color 色)"hoge"

とすれば、hogeが指定した色で表示されるはずです。
指定できる色は、blueやredなど予約されている名前やCSSのffffffのような6文字のRGB値を指定できます。

これにて、プロンプトを自由に変更できるようになりました。
自分好みにカスタマイズして楽しみましょう。

 

fishの便利なところ

これまで利用していたbashでは無かった(?)機能としては、カーソルによる選択ができるところが便利です。


上の画像は、Rubyのtarballを解凍して中身を表示したところです。
coroutineのところにグレーでカーソル的なものがあたっていることがわかると思います。
これは、bashでもあったTabを押すと出てくるファイル一覧のところなのですが、cdなどでパスを選択する場合は上記のように矢印キーでカーソルを移動して選択することができます。
これが地味に便利。
キータイプに慣れていない場合でも簡単に使うことができます。

スクリーンショット 2019-04-17 7.18.53.png

その他、これまでの操作履歴からよく使うパスなどを自動で補完・候補を提示してくれます。
私は、書いたスクリプトはGithub以外にDropboxにも置いているのですが、Dropboxへはよく移動しているために、cd Drと打つだけですでにパス候補が提示されています。

よく使うコマンドは数文字打つだけで保管されるので、使い続けるとより手に馴染んでいきそうですね。

 

まとめ

今回は、ターミナルのシェルをbashからfishに変更しました。
まだ使い始めたばかりであるため、不満なところやTips的な知識がなく、少し触った感想をまとめるだけになってしまいました。
少しずつ使ってみて、すべき設定や便利な機能などをまとめたいと思います。

 

今回はここまで。
おわり

Mac,環境構築

Posted by shikiyura