Open3
fish初心者の僕がfishつよつよになるまでの道のり #fish
そもそも
fishを何となくで使っていたのだが、ちゃんと理解しながら使えるようになりたいと思ってこのスクラップを作成した。
パスを通すぞ
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が長くなっていき、起動が遅くなってしまうため。
参考
使い方
以下の通りに使えばPATHに追加されるらしい。
fish_add_path /usr/local/bin
ちなみにこのコマンドは何回打っても大丈夫みたい。
なぜならなかったら追加していく挙動になっているので、あった場合は無視するらしい。
試してみる
fish_add_path /usr/local/bin/
echo $fish_user_paths
/usr/local/bin /Users/hogehoge/.local/...
きちんと追加されていることが確認できた。