PATHを設定したんだ,したんだよ確かに,でもな...ないんだ
調べると結構同じ問題にあたっている人がいたので,あえて記事にするまでもない気がしましたが,自分のための備忘録として.
TL;DR
デフォルトの設定ファイルが
なかなかどうして
おクソであらせられるので気をつけよう
$HOME/.zshenv に PATH の設定とかが書いてあったそうな
意気揚々と archLinux のインストールから設定までを終え,いつものように細々とした設定ファイルなどを Github から落とし,いつものように anyenv をインストールした.
そしておもむろにexec $(SHELL) -l
を叩き,NeoVim のためにanyenv install pyenv
と打った時,事件は起きた.
SH「 そんなコマンドねーよハゲ 」
俺「え...? いや,あるし...打ち間違えたかな?」
(再度コマンドを打つ)
SH「 そんなコマンドねーよハゲ 」
俺「(゜д゜)」← 本当にこんな顔してたと思う
俺「これは? if [ -d $HOME/.anyenv/bin ] ; then echo "ハゲじゃねーし"; fi
」
SH「 ハゲじゃねーし 」
俺「えぇ...」
そしてハッとしてecho $PATH
をして全てを知る.「パス通ってないじゃん」と.
いやいやいやいや,入れたよ? 確かに入れたよ? .zshenv で入れたよ? ← これが原因の一つだったわけだが
解決法の模索とあっけない結末
疑惑1:(まさかの).zshenv が読み込まれていない
source $HOME/.zshenv
すると確かにパスが通る.うん,怪しい.
# 細々した設定がありましてな...
if [ -d $HOME/.anyenv ] ; then
typeset -Tx ANYENV_ROOT anyenv_root
anyenv_root = $HOME/.anyenv
path=(
${anyenv_root}/bin(N-/)
${path}
)
eval "$(anyenv init - --no-rehash)"
echo "ヅラじゃねーし"
fi
気合を入れて,念のためにログアウト → ログイン
SH「 ヅラじゃねーし 」
...どうやら .zshenv はきちんと読み込まれているらしい...
疑惑2:(Macでも厄介者だった)デフォルト設定ファイル
emulate sh -c 'source /etc/profile'
お...?
umask 022
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin"
export PATH
# 他いろいろ...
あ...
呼び出し順序って,$HOME/.zshenv → /etc/zsh/zprofile → $HOME/.zshrc だものね...
そら(そこに書いたら),そう(上書きされて消える)よ...
やはり前科者の仕業か...
解決策
eval "$(anyenv init - --no-rehash)"
を $HOME/.zshrc に移してもいいけどなぁ...
なんかその方が Vim の起動早くなるっぽいし...それが推奨設定らしいし...
参考記事 > anyenvの設定を正しい位置に書いたらVimの起動が爆速になった
でもそしたら vimrc の方にも書かないとダメだよね...
デフォルトで .zshenv しか読み込まないはずだし,Vim から Ruby とか Python 実行できないと困るし.
面倒だなぁ...この環境でしか起こらない問題だしなぁ...
...夜も更けてきたしなぁ...
source $HOME/.zshenv
とりあえずだから,とりあえずね,とりあえずこうしておきましょう.
そのうち直すし.直すよ.うん,直す直す...そのうちね...
まとめ
- $HOME/.zshenv のあとに /etc/zsh/profile が呼ばれるので注意しよう.
- $PATHの初期化を回避するには,$HOME/.zprofile か $HOME/.zshrc に設定を移しましょう.
- 深夜で眠くて,やけくそになっているときは,.zprofile から .zshenv 読み込んで解決したことにしましょう.
- 実際問題,$PATH の設定って env より profile に書くべきなのだろうか?
- これ,Ubuntu とか CentOS では特に問題にならなかったんだけど,archLinux 特有なのかな?