
$PATH を echo すると、次のようになりますUsers/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools
。
これからいくつかのパスを削除したいのですが、コマンドを使用してファイルを開くとvim /etc/paths
、次の結果が得られます。
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
ファイル /etc/paths は $PATH 変数と異なりますか?
答え1
/etc/paths
は、シェル プロセスの設定に使用されるものの一部です$PATH
。新しいターミナル ウィンドウを開くと、が起動しbash
、いくつかの起動スクリプト ( /etc/profile
AND ~/.bash_profile
OR (存在しない場合) ~/.bash_login
OR (これも存在しない場合) ) が実行されます~/.profile
。これらのスクリプトは、 を含むシェル環境を設定します$PATH
。
が行うことの 1 つは/etc/profile
を実行することです/usr/libexec/path_helper
。これは/etc/paths
と 内のファイルを読み取り/etc/paths.d
、その内容を に追加します$PATH
。ただし、これは単なる出発点に過ぎません。独自の起動スクリプト (存在する場合) で に追加したり$PATH
、 を編集したり、 を完全に置き換えたりすることができます。
起動スクリプト (および/またはそれが実行するもの) が、 から取得する基本セットにいくつかのエントリを追加しているように見えます/etc/paths
。 の先頭に「Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:」が追加され$PATH
(つまり、これらのディレクトリが最初に検索されます)、最後に「:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools」が追加されます。何がそれらを追加しているのかを正確に知りたい場合は、起動スクリプトを確認する必要があります。
ちなみに、この設定プロセスは、$PATH
bash の「ログイン」シェルにのみ適用されます。bash シェルによって実行されるものはすべて$PATH
、このシェルから継承されるため、基本的には同じものになる可能性があります。bash の非ログイン シェルは、多少異なる設定プロセスに従います。他のシェル、およびシェルからまったく開始されないもの (例: cron ジョブ) は、まったく異なる可能性があります$PATHs
。
答え2
最初に変更点を確認する場所は、
~/.profile
~/.bashrc
~/.bash_profile
Bash 以外のものを使用している場合は、その設定ファイルをチェックして、PATH に関する記述があるかどうかを確認してください。