$ PATHをエコーすると、次のようになります: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変数とは異なりますか?
/etc/paths
は、シェルプロセス用に$PATH
を設定するために使用されるものの一部です。新しいターミナルウィンドウを開くと、bash
が起動し、いくつかの起動スクリプトが実行されます:/etc/profile
AND ~/.bash_profile
OR(そうでない場合)存在)~/.bash_login
OR(存在しない場合)~/.profile
。これらのスクリプトは、$PATH
を含むシェル環境をセットアップします。
/etc/profile
が実行することの1つは、/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
を持っている可能性があります。
変更を確認するために最初に確認する場所は、
~/.profile
~/.bashrc
~/.bash_profile
Bash以外のものを使用している場合は、構成ファイルを調べて、PATHに関する記述がないか確認してください。