macOSのプロファイルについて
macOSでプロファイルがどの順番で呼び出され評価されるのかを調べてみました。見に覚えのないパスがどこで設定されているのか気になりました。特にmacOSでは、一般的なLinux(実際は実装次第で、たとえばUbuntuには~/.bash_profileが標準で存在しません)と比較すると、どこでパスが通されているのか分かりづらいです。
結論ですが、~/.bash_profileで設定した覚えのないパスは、path_helperで評価されている可能性があります。
環境:macOS Big Sur、bash 5.1.16
大きく2つのプロファイルが読み込まれる
macOSでは、次の2つのプロファイルが基本となります。まず、共通のプロファイルの/etc/profileとユーザーごとのプロファイルの~/.bash_profileです。この2つのプロファイルが中心となって、それぞれの中で更に細かいプロファイルが読み込まれていますが、その読み込まれ方がLinuxと異なっています。
/etc/profile/etc/paths/etc/paths.d/etc/manpaths/etc/manpaths.d/etc/bashrc~/.bash_profile~/.bashrc
/etc/profileを確認すると、まずpath_helperというコマンドが実行されて、その後に/etc/bashrcが読み込まれているのが分かります。
path_helperは、/etc/pathsと/etc/paths.dを、そしてコマンドのマニュアルである/etc/manpathsと/etc/manpaths.dが読み込まれます。
$ cat /etc/profile
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
コマンドの基本的なパスは、/etc/pathsに、TeXやmonoといった個別のアプリケーションのパスは/etc/paths.dにファイルとして格納されていました。ファイルの中身はそのパスが記述されています。
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
$ ls /etc/paths.d
dotnet mono-commands TeX dotnet-cli-tools
$ cat /etc/paths.d
/Library/TeX/texbin
更新情報
- 作成日:2021-01-12
- 作成日:2022-02-30