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