作曲・指導・C言語・Linux

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。

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と異なっています。

  1. /etc/profile
    • /etc/paths
    • /etc/paths.d
    • /etc/manpaths
    • /etc/manpaths.d
    • /etc/bashrc
  2. ~/.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