by shigemk2

当面は技術的なことしか書かない

fish shell set コマンド オプションまとめ

スコープオプション(fish独自の概念)

オプション 説明
なし 現在の関数内でのみ有効(ローカル)。関数外ではグローバル
-l / --local 現在のブロック内でのみ有効(ローカル)
-g / --global 現在のシェルセッション全体で有効(グローバル)
-U / --universal シェルを閉じても永続化。全fishインスタンスで共有(ユニバーサル)

エクスポートオプション(一般的なシェルの概念)

オプション 説明
-x / --export 子プロセスに引き継がれる(環境変数になる)
-u / --unexport 子プロセスに引き継がれない

環境変数はUnix/Linux共通の概念。bashのexportと同等。

組み合わせ例

# ローカル変数(関数/ブロック内のみ)
set -l name "Alice"

# グローバル変数(セッション全体)
set -g name "Bob"

# 環境変数(子プロセスに渡る、ローカルスコープ)
set -x API_KEY "secret"

# グローバル + エクスポート(よく使うパターン)
set -gx PATH $HOME/.local/bin $PATH

# ユニバーサル + エクスポート(永続化される環境変数)
set -Ux EDITOR vim

スコープとエクスポートの関係

スコープ(-l/-g/-U)とエクスポート(-x)は独立した概念

  • スコープ = どの範囲で変数が見えるか(fish内部の話)
  • エクスポート = 子プロセスに渡すか(OS全体の話)

参考