こんにちは!
インターンから新卒で入社した、サーバサイドエンジニアのkanacchiです。
突然ですが、新卒や新たな環境で働くことになったエンジニアの皆さん。
社用PCが供給されてまずはじめに行うことありますよね。
そう、環境構築です。
かく言う僕も先日環境構築を行ったわけですが、その際新たにfish
shellを使うことにしたので、今回はfish shellの紹介とハマったポイントなどを残していければと思います。
※注)所々でsudo対応を連発したところ、ことあるごとにpermission error
が出るようになってしまいました。(現に今もsudoで臨時対応してます、、)
この記事を見ている人は安易にsudoを連発せず、コマンドが通らない場合はきちんと原因を解決してから進んだほうが後々楽になると思います(自戒の念を込めて)
fishのinstallにあたって、大まかにはこちらの記事を参考にさせてもらいました。
fishって何?
"friendly interactive shell"の略でshellの1つです。
fishのいいところは沢山ありますが、僕がおすすめしたい点は3つです。
①ターミナルがかっこいい
無駄のない、シンプルなターミナルがデフォルトです。
~ >
そして僕のターミナルはこんな感じで、左にrubyのバージョンを表示させてます。
ディレクトリを移動するとこう表示されます。
緑の部分は現在のブランチです。
そしてそのテーマ設定などをブラウザで扱えます。
$ fish_config
② 構文エラーがわかりやすい
無効なコマンドと有効なコマンドをわかりやすく表示してくれます。
無効なコマンド
有効なコマンド
③コマンドの補完機能が優れている
一度打ったコマンドを学習し、コマンドを補完してくれます。
(右側にグレーで表示されます)
fishをインストール
それではまず、fishをインストールしていきます。
Homebrewを使ってfishをインストールしましょう。
$ brew install fish
インストール後はfishコマンドが使えるようになります。
$ fish -v fish, version 3.0.2
次にデフォルトshellをfishするために、shellファイルを編集します。
$ sudo vi /etc/shells
. . . /bin/zsh /usr/local/bin/fish ← この一行を追加します。
そしてfishをデフォルトshellに変更します。
$ chsh -s /usr/local/bin/fish
fisherman
というfish用のパッケージマネージャーをインストールします。
これはrbenvのパス設定をするためのものです。
$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher
fishermanをインストールすることで、 fisherコマンドが使えるようになります。
$ fisher -v
テーマ設定
次にテーマ設定をします。
まずtheme-bobthefish
をインストールしましょう。
theme-bobthefish
はoh-my-fishというパッケージマネージャー用のテーマです。
(※参考にした記事では fisher install となっていますが、version3以降はinstall → add にコマンドが変更されました。)
$ fisher add oh-my-fish/theme-bobthefish
多くのテーマはデフォルトで入っているのフォントで対応できないのでpowerlineをインストールします。
$ git clone https://github.com/powerline/fonts.git --depth=1 $ cd fonts $ ./install.sh
設定 → フォント → 「Powerline」とついたフォントの中から、好きなものを選択してください。
プラグインをインストール
僕のおすすめのプラグインはfisher z
コマンドです。
$ z (フォルダ名)
で一発でそのフォルダに移動します。
インストールも簡単です。
$ fisher add z
こちらの記事で、おすすめプラグインをまとめてくれています。
fishでrbenvを使えるようにする
(※Ruby/Rails使う人向けです。)
fishはconfigファイルの場所がbash,zshと異なります。
pathの通し方は調べてみると色々出てくるのですが、僕が参考にしたのはこちらの記事です。
最初に rbenvをインストールします。
$ brew install rbenv $ brew install rbenv ruby-build
次にrbenv pathを通します。
fish.confingを置くディレクトリまで移動します。
$ cd ~/.config/fish/
fish.configがあればそこに、なければ作成してpathを記述します。
$ touch fish.config $ vi fish.config
以下を記述します。
# rbenv set -x PATH $HOME/.rbenv/bin $PATH status --is-interactive; and source (rbenv init -|psub) . . .
sourceコマンドで読み込みます。
$ source ~/.fish.profile
あとは、通常のrbenvのフローと同じです。
(ZEALSでは現在ruby 2.4.1を使っています。)
$ rbenv install 2.4.1 $ rbenv local 2.4.1 $ gem install bundler
実は、ここでなぜかpermissionエラーがでてしまいました。
ERROR: While executing gem ... (Errno::EACCES) Permission denied @ rb_sysopen - ....
sudo使いまくった
(※ここから先は直接fishと関係ありません)
エラーの対応として、
$ sudo gem install bundler
を使うとエラーが出ず通ったのですが、以降はコマンドを使う際にほとんどpermission error
が出るようになってしまいました。
原因はroot userで無理やり gem install bundler
を行ったことだと考え、./.rbenv/versions
配下になるファイルの権限を全て変更してもうまくいきません...
結局半日ぐらいかけても解決策が見つからなかったので、渋々sudoを使い続けることになりました。
感想
fishは見た目もすごくイケてて機能も便利なので入れてよかったとは思っています。
しかし、bach, zshとは設定の仕方が少し違うので、社内ドキュメントで共有されたコマンドなども自分だけ設定方法が違うことがあります。
初心者エンジニアがfishを入れる際には、その点を注意した方が良いと感じました。
(※途中から発生したrbenvの問題は、解決したらまたテックブログに記事を書かせていただきます...!!)