Help us understand the problem. What is going on with this article?

Path が消える...

More than 3 years have passed since last update.

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すると確かにパスが通る.うん,怪しい.

$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でも厄介者だった)デフォルト設定ファイル

/etc/zsh/zprofile
emulate sh -c 'source /etc/profile'

お...?

/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 実行できないと困るし.

面倒だなぁ...この環境でしか起こらない問題だしなぁ...
...夜も更けてきたしなぁ...

$HOME/.zprofile
source $HOME/.zshenv

とりあえずだから,とりあえずね,とりあえずこうしておきましょう.
そのうち直すし.直すよ.うん,直す直す...そのうちね...

まとめ

  • \$HOME/.zshenv のあとに /etc/zsh/profile が呼ばれるので注意しよう.
  • \$PATHの初期化を回避するには,\$HOME/.zprofile か $HOME/.zshrc に設定を移しましょう.
  • 深夜で眠くて,やけくそになっているときは,.zprofile から .zshenv 読み込んで解決したことにしましょう.
  • 実際問題,\$PATH の設定って env より profile に書くべきなのだろうか?
  • これ,Ubuntu とか CentOS では特に問題にならなかったんだけど,archLinux 特有なのかな?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away