Nushell 環境で fnm を利用した Node.js の設定方法

2025年10月7日

Nushell で fnm を用いて Node.js を利用する設定手順

Nushell 上で node コマンドを確実に解決させるためには、fnm env が出力する環境変数(特に FNM_MULTISHELL_PATH)を Nushell の PATH に適切に反映させる必要があります。本記事では、その最小設定と検証プロセスをまとめます。

バージョン

名称 バージョン
Nushell 0.98.0
fnm 1.37.1

結論($nu.env-path に記述する内容)

Nushell の環境初期化ファイル($nu.env-path)に、次の設定を追加します。

# 参考: PATH のエントリ追加の一般的パターン(Nushell Book より)
# $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
# あるいは stdlib の `path add` を使う方法もある:
# use std "path add"
# $env.PATH = ($env.PATH | split row (char esep))
# path add /some/path
# path add ($env.CARGO_HOME | path join "bin")
# path add ($env.HOME | path join ".local" "bin")
# $env.PATH = ($env.PATH | uniq)

# fnm が出力する環境変数を JSON として受け取り、まとめて取り込む
fnm env --json | from json | load-env

# Linux では node バイナリが `$env.FNM_MULTISHELL_PATH / "bin"` 配下になる点に注意
# ここではクロスプラットフォーム向けに multishell パス自体を PATH 先頭に加える
$env.PATH = (
  $env.PATH
  | split row (char esep)
  | prepend $env.FNM_MULTISHELL_PATH
  | uniq
)

補足:

  • Linux のみ ($env.FNM_MULTISHELL_PATH | path join "bin") を使うアプローチも可能です。
  • 既存 PATH と重複しないよう uniq でユニーク化しています。

検証プロセス

1) fnm env の基本挙動(PowerShell の例から把握)

fnm の README では PowerShell 用に次の初期化が案内されています。
https://github.com/Schniz/fnm?tab=readme-ov-file#powershell

fnm env --use-on-cd --shell power-shell | Out-String | Invoke-Expression

この出力には、$env:FNM_LOGLEVEL = "info" のような環境変数設定が含まれます。
つまり fnm env は各シェル向けの「環境変数設定スクリプト」を生成するコマンドです。

2) fnm env の内部実装の要点

fnm の実装(Rust)を確認すると、env サブコマンドは FNM_MULTISHELL_PATH などを生成し、Windows では PATH の先頭に FNM_MULTISHELL_PATH を挿入する文字列を出力します。

  • src/commands/env.rs(抜粋の要旨)
    • FNM_MULTISHELL_PATH を算出
    • シェル種別に応じて PATH へ追加する文字列を生成
    • Windows: FNM_MULTISHELL_PATH をそのまま PATH
    • Unix: FNM_MULTISHELL_PATH/binPATH

このため、Nushell でも同様に FNM_MULTISHELL_PATHPATH に入れる必要があります。

3) Nushell での取り込み(load-env まで)

Nushell では fnm env --json を使うと JSON 形式で環境変数の集合を取得できます。
from jsonrecord に変換し、load-env で一括反映します。

参考: Nushell Book: Environment

# そのまま load-env すると型不一致になるため、まず JSON を record 化する
fnm env --json | from json | load-env

# 反映確認
$env.FNM_LOGLEVEL
# => info 等

4) PATH の調整と Node 実行確認

FNM_MULTISHELL_PATHPATH に追加した後、node --version が解決できることを確認します。

$env.PATH = (
  $env.PATH
  | split row (char esep)
  | prepend $env.FNM_MULTISHELL_PATH  # Linux は join "bin" も検討
  | uniq
)

node --version
# => vXX.YY.ZZ

参考リンク

まとめ

  • fnm env --json | from json | load-env で fnm の環境変数を Nushell に一括適用できる。
  • さらに FNM_MULTISHELL_PATHPATH に追加することで、node が解決される。
  • 設定は $nu.env-path に記述しておくと、起動時に自動で反映される。

お気軽にお問い合わせください

安心と進化を兼ね備えたIT基盤で、御社の未来を共に築きます。

クラウド・AI・APIで進化するIT基盤で、ビジネスの持続的成長をサポートします。

今すぐご相談ください。