はじめに
シェルをbashからfishに乗り換えたら元々使ってたAnacondaのPATH設定をやり直す必要が出てきたけど,当てはまる記事があまりなくて躓いたのでメモ。
状況
- fishインストールしてデフォルトシェルに設定済み
- Anaconda(およびその仮想環境)もインストール済み
- ↑但しfishでPATH設定してないので
conda
コマンドが使えない
PATHを通す
fishではユニバーサル変数というfishセッション全てで共通して使える(=ターミナルを再起動しても不変)変数があり,PATH用には$fish_user_paths
というリストの変数が用意されてるのでそこに追加する事になる。
以下のコマンドを実行するとPATHを追加できる。
$ set -U fish_user_paths $HOME/opt/anaconda3/bin $fish_user_paths
これでPATHの追加は完了。(ちなみにPATHそのものである$HOME/opt/anaconda3/bin
の部分だけ書き換えれば他のPATHも同じように追加できる。)
ターミナルを再起動してecho $PATH
を実行して下のように先ほど設定したPATHが表示されればOK。
$ echo $PATH
/Users/{$USER}/opt/anaconda3/bin
でもこれではまだconda activate
とかは使えないはず。どうやら現在のシェルに合わせてAnacondaの初期化が必要っぽいのでそれを実行。
$ conda init fish
そしてまたターミナル再起動。これでconda activate
とかもできるはず。
補足(備忘録)
-
$fish_user_paths
を含むfishのユニバーサル変数は全て~/.config/fish/fish_variables
に記述されてる。
$fish_user_paths
は最後の方にあるはず。
#例
SETUVAR fish_user_paths:/Users/kimurafuga/opt/anaconda3/bin
- 他の記事で
~/.config/fish/config.fish
にPATHを書き込めって書いてあるのもあったけど絶対ダメ!
最初それを鵜呑みにしてそのconfig.fish
(無かったので自分で作った)にさっきの
$ set -U fish_user_paths $HOME/opt/anaconda3/bin $fish_user_paths
を書き込んだら一見PATHを通せた様に見えたけど,ターミナルを再起動するたびに新しくset
されちゃうみたいで気づいたら$fish_user_path
に10個近く同じPATHが上書きで追加されちゃってた。必ず上記のようにコマンドラインから設定すること。