0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者向け!見た目がかっこいいシェル環境を作る!(Fishシェルを使ってみよう)

Last updated at Posted at 2025-01-28

Fishシェルとは

Fishシェル(Friendly Interactive SHell)は、ユーザーフレンドリーでインタラクティブなシェルとして設計されたUnixシェルです。

ゴールはこんな感じになります。

f16f6b2c-6c35-11e6-8eb9-9f23ea3cce2e.gif
引用: https://github.com/oh-my-fish/theme-bobthefish

Zshでいいじゃん

別にZshでいいじゃんという人もいるかと思いますので、ChatGPTにFishとZshを比べたときの利点を聞いてみました。

FishシェルとZshシェルを比較した際のFishシェルの利点は以下の通りです:

  • 直感的な構文: Fishは、よりシンプルで直感的な構文を提供しています。特に、条件分岐やループの記述が簡潔で、初心者でも理解しやすいです
  • 自動補完の強化: Fishの自動補完機能は非常に強力で、リアルタイムでコマンドやオプション、ファイル名の候補を表示します。Zshでも補完機能はありますが、Fishはデフォルトでより使いやすい設計になっています
  • シンタックスハイライト: Fishは、入力中のコマンドに対してシンタックスハイライトを提供し、エラーや警告を視覚的に示します。これにより、間違ったコマンドを入力するリスクが減ります
  • 設定の簡素化: Fishの設定ファイルはシンプルで、ユーザーがカスタマイズしやすいです。Zshの設定は複雑になりがちですが、Fishはより直感的に設定できます
  • デフォルトでの機能充実: Fishはデフォルトで多くの便利な機能が組み込まれており、追加の設定やプラグインなしで使いやすいです。Zshは多くの機能を持っていますが、初期設定ではそれらを有効にするための追加の設定が必要です
  • スクリプトの簡単さ: Fishでは、スクリプトを書く際に、変数の宣言や関数の定義が簡単に行えます。Zshに比べて、スクリプトの可読性が高いと感じるユーザーが多いです
  • エラーメッセージの明確さ: Fishは、エラーメッセージが明確で、何が問題であるかを理解しやすいです。Zshのエラーメッセージは時に難解なことがあります

これらの利点により、Fishシェルは特に初心者やシェルを快適に使いたいユーザーにとって魅力的な選択肢となっています。

この中でシンタックスハイライトについて実際に見てみると以下の様な形で表示されます。

  • 正しいコマンド例
    スクリーンショット 2025-01-27 15.28.49.png
  • 間違ったコマンド例
    スクリーンショット 2025-01-27 15.29.41.png

これならタイプミスも一発で分かりますね。

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から変更することができます。
この辺りも初心者ライクな仕様ですね。いろいろ触ってみてください。

スクリーンショット 2025-01-28 16.27.08.png

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ステータス表示もいい感じです。

f16f6b2c-6c35-11e6-8eb9-9f23ea3cce2e.gif
引用: https://github.com/oh-my-fish/theme-bobthefish

こちのテーマは前回の初心者向け!とりあえず見た目がかっこいい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シェルとりあえず触ってみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?