Edited at

PATH設定がどこにあるか分からないときに見るべきファイル

More than 5 years have passed since last update.


背景

brew doctor したら過去にインストールしたPalmSDKが残ってるぞと言われた。気にしなくていいよと書かれてはいるが気持ち悪いので削除したい。

Warning: Some directories in your path end in a slash.

Directories in your path should not end in a slash. This can break other
doctor checks. The following directories should be edited:
/opt/PalmSDK/0.1/bin/


PATH設定箇所の捜索


どこにも設定していない。

以下をみても、grepしてみても、どこにもそんなの書いてない...。

/etc/bashrc

~/.bash_profile
~/.bashrc
~/.profile


どこだ?

/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

で、この /usr/libexec/path_helper を実行してみると、以下のものが出力されます。

$ /usr/libexec/path_helper -s

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:
/opt/X11/bin:/opt/PalmPDK/bin:/opt/PalmSDK/0.1/bin/";
export PATH;

どうやら$PATHの設定を行ってくれる実行ファイルらしい。でもどこを見てるんだ?


path_helper

man path_helper を実行してみると答えが書いてありました。

path_helper(8)            BSD System Manager's Manual           path_helper(8)

NAME
path_helper -- helper for constructing PATH environment variable

SYNOPSIS
path_helper [-c | -s]

DESCRIPTION
The path_helper utility reads the contents of the files in the directories
/etc/paths.d and /etc/manpaths.d and appends their contents to the PATH and
MANPATH environment variables respectively. (The MANPATH environment vari-
able will not be modified unless it is already set in the environment.)

Files in these directories should contain one path element per line.

Prior to reading these directories, default PATH and MANPATH values are
obtained from the files /etc/paths and /etc/manpaths respectively.

Options:

-c Generate C-shell commands on stdout. This is the default if SHELL
ends with "csh".

-s Generate Bourne shell commands on stdout. This is the default if
SHELL does not end with "csh".

NOTE
The path_helper utility should not be invoked directly. It is intended
only for use by the shell profile.

Mac OS X March 15, 2007 Mac OS X

なるほど、/etc/paths.d/etc/manpaths.d の中身が$PATHに足されるのね。


/etc/paths.d

ls /etc/paths.d/ とすると、以下が出てきたーっ!

$ ls /etc/paths.d/

40-XQuartz
PalmPdkPath
PalmSdkPath

まんま書いてあるのですね。


/etc/paths.d/PalmSdkPath

/opt/PalmSDK/0.1/bin/



対応実施

すでにSDK削除済みなのでパスの設定も削除して対応

$ sudo rm /etc/paths.d/PalmPdkPath

$ sudo rm /etc/paths.d/PalmSdkPath


反映タイミング

ターミナル起動時に設定が反映されます。