Fishシェルとは
Fishシェル(Friendly Interactive SHell)は、ユーザーフレンドリーでインタラクティブなシェルとして設計されたUnixシェルです。
ゴールはこんな感じになります。
Zshでいいじゃん
別にZshでいいじゃんという人もいるかと思いますので、ChatGPTにFishとZshを比べたときの利点を聞いてみました。
FishシェルとZshシェルを比較した際のFishシェルの利点は以下の通りです:
- 直感的な構文: Fishは、よりシンプルで直感的な構文を提供しています。特に、条件分岐やループの記述が簡潔で、初心者でも理解しやすいです
- 自動補完の強化: Fishの自動補完機能は非常に強力で、リアルタイムでコマンドやオプション、ファイル名の候補を表示します。Zshでも補完機能はありますが、Fishはデフォルトでより使いやすい設計になっています
- シンタックスハイライト: Fishは、入力中のコマンドに対してシンタックスハイライトを提供し、エラーや警告を視覚的に示します。これにより、間違ったコマンドを入力するリスクが減ります
- 設定の簡素化: Fishの設定ファイルはシンプルで、ユーザーがカスタマイズしやすいです。Zshの設定は複雑になりがちですが、Fishはより直感的に設定できます
- デフォルトでの機能充実: Fishはデフォルトで多くの便利な機能が組み込まれており、追加の設定やプラグインなしで使いやすいです。Zshは多くの機能を持っていますが、初期設定ではそれらを有効にするための追加の設定が必要です
- スクリプトの簡単さ: Fishでは、スクリプトを書く際に、変数の宣言や関数の定義が簡単に行えます。Zshに比べて、スクリプトの可読性が高いと感じるユーザーが多いです
- エラーメッセージの明確さ: Fishは、エラーメッセージが明確で、何が問題であるかを理解しやすいです。Zshのエラーメッセージは時に難解なことがあります
これらの利点により、Fishシェルは特に初心者やシェルを快適に使いたいユーザーにとって魅力的な選択肢となっています。
この中でシンタックスハイライトについて実際に見てみると以下の様な形で表示されます。
これならタイプミスも一発で分かりますね。
Fishのインストール
恒例ですがMacOSはbrewでインストールができます。WSL組は各ディストリビューションのパッケージインストールコマンドか、brewを導入してみてもいいかと思います。
brew install fish
インストールができたらパスを確認しておきましょう。
which fish
MacOSであれば/opt/homebrew/bin/fish
と出てくるかと思いますので、これをシェルの管理リストに追記してあげます。
echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
追記できたら、ログインシェルを変更していきます。
chsh -s /opt/homebrew/bin/fish
これで無事、Fishシェルを使う準備ができました。
設定ファイル
Fishの設定ファイルは~/.config/fish/config.fish
になります。
brewの設定
初期状態のままではbrewが使えないので設定に少し手を加えます。
if status is-interactive
# Homebrew
eval (/opt/homebrew/bin/brew shellenv)
end
if status is-interactive
というのは、簡単に言えばユーザーがコマンド入力可能な状態かどうかの判定になります。
ここまでできたら、ターミナルを再起動するかfish
コマンドでFishシェルを起動してみましょう。
brew
コマンドが使えるなら、正しく設定できています。
Pathの追加
Fishシェルにパスを追加したい(パスを通したい)場合があるかと思います。そういった場合はfish_add_path
を利用します。
例えば、~/.local/bin
にパスを追加したい場合はconfig.fish
に以下のように記述します。
if status is-interactive
...
# add path
fish_add_path $HOME/.local/bin
end
fish_config
fish_config
コマンドを使うとブラウザが立ち上がり、設定をGUIから変更することができます。
この辺りも初心者ライクな仕様ですね。いろいろ触ってみてください。
Oh My Fish!
急にどうしたと思われるかもしれませんが、Oh My Fish!
というのはFishシェルのフレームワークになります。プラグインマネジャーって言ってもいいかもしれません。
テーマの追加等もomf経由で行うことができます。
インストール方法は以下の通りです。
curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
インストールできたらomf
と打ってみましょう。USAGEが出てきたらOKです。
例えば、自分が使っているテーマはbobthefish
というものになります。
最初に見せたテーマがこれですね。Gitステータス表示もいい感じです。
こちのテーマは前回の初心者向け!とりあえず見た目がかっこいいNeovimの設定で行ったNerdFontのインストールが必要になるので注意して下さい。
インストール方法は以下のコマンドOKです。
# インストール
omf install bobthefish
設定ファイル
bobthefish
の設定は~/.config/fish/conf.d/bobthefish.fish
に記載しましょう。
先程のGithubのページに様々な設定項目について説明があるので気になるものがあったら設定してみましょう。
デフォルトのままでも全く問題はありませんが、set -g theme_show_project_parent no
を設定すると、プロジェクトルートではそれより上の階層表示がされなくなり、少し見やすくなります。
また、theme_date_format
を使うと右プロンプトの日時表示をカスタマイズすることができます。
# プロジェクト内では、親パスは表示しない
set -g theme_show_project_parent no
# 右プロンプトの日時フォーマット
set -g theme_date_format "+%F %H:%M:%S"
終わりに
初心者向けの見た目がかっこいいシリーズは一旦以上になるかと思います。
黒い画面の現実に直面して挫折する人がよくいますが、何もしないまま絶望するよりは、見た目から入って慣れ親しむ努力をする方が絶対にいいです。
Fishシェルとりあえず触ってみてください!