$ PATHを入力すると、値のリストにPythonフレームワークの一部/etc/paths
とそのリンクも表示されます。/etc/paths.d
これらはどこで読まれますか?
答え1
コンピュータにログインすると、loginwindow.appは、、、、、および$HOME
を含むデフォルトの$SHELL
環境を設定します。デーモンまたはエージェントを起動して環境を変更することもできます。あるいは、拡張によって通常、PATH変数はカーネル内のハードコーディングされたPATH変数に設定されます。$TMPDIR
$LOGNAME
$USER
$PATH
launchd
sysctl user.cs_path
user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin
ターミナルエミュレータを起動すると、デフォルトで呼び出されますlogin
。login -pf <yourname>
まだ設定されていない環境変数のみが設定されます(参考資料を参照man login
)。
その後、シェルは$SHELL
呼び出しからそのファイルを読み込みます。設定されたPATH変数を取得、読み込み、現在のPATHから重複項目を削除し、PATH変数を設定どおりに並べ替え、その中のファイルを読み込み、そのファイルをPATH変数に追加し、元のPATHへの任意のパスを追加してください。追加されていない../etc
path_helper
path_helper
/etc/paths
/etc/paths
/etc/paths.d
最後に、$ SHELLはホームディレクトリにあるログインシェルに対応するrcファイルを読み込みます。
答え2
デフォルトでは、呼び出されたプログラムはpath_helper
さまざまなシェルのrcファイルで/etc/*
実行されます。
$ grep path_helper /etc/* 2>/dev/null
/etc/csh.login:#if ( -x /usr/libexec/path_helper ) then
/etc/csh.login:# eval `/usr/libexec/path_helper -c`
/etc/profile:#if [ -x /usr/libexec/path_helper ]; then
/etc/profile:# eval `/usr/libexec/path_helper -s`
/etc/zprofile:#if [ -x /usr/libexec/path_helper ]; then
/etc/zprofile:# eval `/usr/libexec/path_helper -s`
$
これは明らかにいいえデフォルトは無効にしpath_helper
て、PATH
私のrcファイルで管理しました。