10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Path が消える...

Last updated at Posted at 2016-02-23

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 特有なのかな?
10
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?