Open3

fish初心者の僕がfishつよつよになるまでの道のり #fish

ryuji_cre8iveryuji_cre8ive

そもそも

fishを何となくで使っていたのだが、ちゃんと理解しながら使えるようになりたいと思ってこのスクラップを作成した。

ryuji_cre8iveryuji_cre8ive

パスを通すぞ

fishにはスコープが3つあるらしい

ユニバーサル

  • 1 つのコンピューター上でユーザーが実行しているすべての fish セッション間でシェアされます。
  • set -U または set --universal で明示的にセットできます。

グローバル

  • グローバル変数は現在の fish セッションに固有であり、set -e コマンドで明示的に要求されない限り決して消えません。
  • set -g または set --global で明示的にセットできます。

ローカル

  • ローカル変数は現在の fish セッションに固有であり、特定のコマンドブロックに関連付けられています。その特定のブロックのスコープがスコープ外になると変数は自動的に削除されます。コマンドのブロックは、for, while, if, function, begin, switch などから始まり、end コマンドで終了する一連のコマンドです。
  • set -l または set --local で明示的にセットできます。

なのでパスを通したい時はユニバーサル変数として定義してあげるのが良いらしい。

fish_user_pathsについて

fishシェルで用意されている特殊なユニバーサル変数になります。
この変数に追加されたパスは追加される度に自動的に今開いているセッション及び将来開くセッション全ての$PATH に永久的に設定が保存されます。

らしいのでその通りにやってみます。

☢️禁忌☢️

config.fishでfish_user_pathsを設定するような項目を書いてはいけない。
→セッションを跨いでしまうので、起動するたびにPATHが長くなっていき、起動が遅くなってしまうため。

参考

https://qiita.com/_kimoton/items/ea31f3369ee72b7ec954
https://zenn.dev/estra/articles/zenn-fish-add-path-final-answer

ryuji_cre8iveryuji_cre8ive

使い方

以下の通りに使えばPATHに追加されるらしい。

fish_add_path /usr/local/bin

ちなみにこのコマンドは何回打っても大丈夫みたい。
なぜならなかったら追加していく挙動になっているので、あった場合は無視するらしい。

試してみる

fish_add_path /usr/local/bin/
echo $fish_user_paths
/usr/local/bin /Users/hogehoge/.local/...

きちんと追加されていることが確認できた。
https://fishshell.com/docs/current/tutorial.html#path