nodeのインストール時に少し詰まったので備忘録として書いておこうと思います。
結論:
fish での環境変数指定では
-x
オプションを忘れない!
config.fish
set -x N_PREFIX $HOME/.n. # -x オプションが必要だった
set PATH $N_PREFIX/bin $PATH
n をインストールし、 n lts でインストールに失敗する
n のインストールは Homebrew でインストールしました。
brew install n
n ではインストール先が /usr/local/bin になっていますが、これだと権限でエラーになります。なのでインストール先を以下のように指定し、パスも通しました。
config.fish
set N_PREFIX $HOME/.n
set PATH $N_PREFIX/bin $PATH
これでインストールはできるようになったはずなので安定版をインストールしてみます。
n lts
でもエラーになります。
installing : node-v16.15.0
mkdir : /usr/local/n/versions/node/16.15.0
mkdir: /usr/local/n: Permission denied
Error: sudo required (or change ownership, or define N_PREFIX)
なんで・・・?
$N_PREFIX
が設定できていないのかなと思いましたが、ちゃんとセットできているようです。
exec fish
echo $N_PREFIX
/Users/branch10480/.n
正解はこれ!
環境変数のセット時に -x
オプションを付ける ということが重要でした。
これで n lts
の実行時に $N_PREFIX
が適用されるようになります。
config.fish
set -x N_PREFIX $HOME/.n. # -x オプションが必要だった
set PATH $N_PREFIX/bin $PATH
-x オプションとは?
-x
、 -export
オプションを指定することで子プロセスにも伝播されるようになるとのことです。これでやっと環境変数として使えるようになります。
今回これを指定するのを忘れていました。
同じようなところで詰まっている方の参考になれば幸いです!