LoginSignup
6
3

More than 5 years have passed since last update.

OPAM 1.2.2を使っている人がfishを使い始めるときの注意点

Last updated at Posted at 2016-09-15

fishというシェルがどうやら良いらしいということでbashから乗り換えてみましたが、色々と問題が。

Homebrewで提供されているOPAMの安定版の最新バージョンは1.2.2ですが、OPAM 1.2.2のfish用の設定ファイルに誤りがあり、場合によってはfishシェルが正しく動作しなくなる場合があるので、書き残すことにしました。

ちなみに、OPAMのバージョンが古すぎる場合は、fish用の設定ファイル自体が存在しないこともあるので気をつけてください。

config.fishの設定

~/.config/fish/config.fishに以下の一行を追加して下さい(.opam/がホームディレクトリ以外の場所にある場合は適宜修正して下さい)。

config.fish
source ~/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true

これがないと、OPAMでインストールしたパッケージがうまく実行されません。

variables.fishの変更

init.fishは単にvariables.fishを呼び出しているだけですが、variables.fishに誤りがあるため、config.fishの変更だけを適用すると、fishシェルが正しく動作しなくなるので気をつけて下さい。

ということで、~/.opam/opam-init/variables.fishの1行目と4行目をそれぞれ以下のように修正して下さい。

variables.fish
1 set -gx PATH ~/.opam/system/bin $PATH;

4 set -gx MANPATH "$MANPATH" ~/.opam/system/man;

注意すべきは、$MANPATHはダブルクォーテーションで囲まれていますが、$PATHは囲まれていないという点です。

$PATHをダブルクォーテーションで囲むと$PATHが~/.opam/system/binで上書きされてしまい、OPAMでインストールされたパッケージのコマンド(とexit)以外は実行できなくなります。
一方、"$MANPATH"のダブルクォーテーションがないと、OPAMのマニュアルが正しく追加されません。

この辺はfishスクリプトの仕様がアレな感じがしますが、fishスクリプトの文法に明るくないので、どうしてこうなってるのかはよく分かりません…。

ちなみに、追加するパスはダブルクォーテーションで囲まれていても囲まれていなくても大丈夫なようです。

6
3
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
6
3