🤔

/usr/local/bin とかっていつパス通してんの?

2022/05/22に公開

疑問

echo $PATH

すると、/usr/local/bin とか /usr/bin とか /bin とかが入ってる。
でもそんなパス通した覚えない。

.bash_profile をよく見てみてもそんなパス通してないし、
.bash_profile を空ファイルにしてみても /usr/local/bin とかにパス通ってる。

答え

/etc/profile がやってる。
シェルへのログイン時に読み込まれるらしい。

Mac だとこういうやつ。

hoge@fuga:/Library/LaunchDaemons$ cat /etc/profile 
# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi

ここで実行されてる path_helper が、/etc/paths

hoge@fuga:/Library/LaunchDaemons$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

/etc/paths.d/ 以下に記載されているパスを通してくれるらしい。

hoge@fuga:/Library/LaunchDaemons$ cat /etc/paths.d/*
/usr/local/go/bin

参考

https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31
https://wa3.i-3-i.info/word11795.html

Discussion