fish_add_path - PATHにディレクトリを追加する

概要

fish_add_path path ...
fish_add_path [(-g | --global) | (-U | --universal) | (-P | --path)] [(-m | --move)] [(-a | --append) | (-p | --prepend)] [(-v | --verbose) | (-n | --dry-run)] PATHS ...

説明

fish_add_path は、fish の PATH にディレクトリを簡単に追加するための手段です。ディレクトリを fish_user_paths に追加するか、(--path スイッチが指定された場合は)直接 PATH に追加することで機能します。

(デフォルトでは)config.fish 内で fish_add_path を使用しても安全ですし、対話的に一度だけ実行することも可能です。後者の場合、ユニバーサル変数 の仕組みによって、以降のセッションでも設定が保持されます。これは「意図を汲み取る(do what I mean)」スタイルのコマンドであり、デフォルトで適切な動作を試みつつ、ユーザーが既に設定している内容(例: 既にグローバルな fish_user_paths を使用している場合など)に従います。より細かな制御が必要な場合は、変数自体を直接変更することを検討してください。

ディレクトリは realpath によって正規化されます。末尾のスラッシュは無視され、相対パスは絶対パスに変換されます(ただし、シンボリックリンクの解決は行われません)。ディレクトリが既に含まれている場合は再度追加されることはなく、--move スイッチが指定されない限り、元の位置に維持されます。

ディレクトリは指定された順序で追加され、--append が指定されない限りパスの先頭に追加(prepend)されます。$fish_user_paths が使用される場合、指定したパスは $fish_user_paths 内の末尾に追加されますが、$fish_user_paths 自体が PATH の先頭に挿入されるため、結果としてシステムパスより優先されます。--path オプションを使用した場合は PATH に直接追加されるため、この挙動は適用されません。

--path を使用する場合、PATH はユニバーサル変数ではなくグローバル変数である必要があるため、変更は永続化されません。したがって、これらの呼び出しは config.fish に記述しておく必要があります。これは、(--global を渡すなどして) fish_user_paths をグローバル変数にした場合も同様です。

新しく追加されるディレクトリがない場合、変数(fish_user_pathsPATH)は再設定も変更もされないため、変数ハンドラはトリガーされません。

引数が既存のディレクトリでない場合、fish_add_path はそれを無視します。

オプション

-a--append

ディレクトリを変数の「末尾」に追加します。

-p--prepend

ディレクトリを変数の「先頭」に追加します(これがデフォルトです)。

-g--global

グローバルな fish_user_paths を使用します。

-U--universal

ユニバーサルな fish_user_paths を使用します。変数がまだ存在しない場合はこれがデフォルトとなります。

-P--path

PATH を直接操作します。

-m--move

既に含まれているディレクトリを、追加されるべき位置(先頭または末尾)へ移動します。デフォルトでは元の位置に維持され、再度追加されることはありません。

-v--verbose

実際に使用された set コマンドを表示し、パスが存在しない、あるいはディレクトリではないためにスキップされた場合などの警告を出力します。fish_add_path が対話的に使用され、出力がターミナルに送られる場合は、詳細モード(verbose)が自動的に有効になります。

-n--dry-run

実行はせずに、使用される予定の set コマンドを表示します。

-h--help

このコマンドのヘルプを表示します。

--move を使用すると、当然ながらパスの優先順位が入れ替わることがあるため、config.fish 内で使用する際は注意が必要です。

使用例

# I just installed mycoolthing and need to add it to the path to use it.
# It is at /opt/mycoolthing/bin/mycoolthing,
# so let's add the directory: /opt/mycoolthing/bin.
> fish_add_path /opt/mycoolthing/bin

# I want my ~/.local/bin to be checked first,
# even if it was already added.
> fish_add_path -m ~/.local/bin

# I prefer using a global fish_user_paths
# This isn't saved automatically, I need to add this to config.fish
# if I want it to stay.
> fish_add_path -g ~/.local/bin ~/.otherbin /usr/local/sbin

# I want to append to the entire $PATH because this directory contains fallbacks
# This needs --path/-P because otherwise it appends to $fish_user_paths,
# which is added to the front of $PATH.
> fish_add_path --append --path /opt/fallback/bin

# I want to add the bin/ directory of my current $PWD (say /home/nemo/)
# -v/--verbose shows what fish_add_path did.
> fish_add_path -v bin/
set fish_user_paths /home/nemo/bin /usr/bin /home/nemo/.local/bin

# I have installed ruby via homebrew
> fish_add_path /usr/local/opt/ruby/bin