1. 概要

このクイックチュートリアルでは、BashおよびZshでLinuxPATH変数にパスを追加する方法に焦点を当てます。

Bashに使用するメソッドはZshでも機能するため、最初に、BashのPATH変数に新しいパスを追加する方法について説明します。

次に、その仕事を行うためのいくつかのZsh固有の方法を探ります。

2. PATH変数

PATH変数は、パスの順序付きリストを含む環境変数であり、Linuxがコマンドの実行時に実行可能ファイルを検索します。 これらのパスを使用すると、コマンドを実行するときに絶対パスを指定する必要がなくなります。

たとえば、 Hello、world!をBashで印刷する場合、 / bin / echo、ではなく、コマンドechoを使用できます。 X146X] /binはPATHにあります:

echo "Hello, world!"

Linuxは、実行可能ファイルが見つかるまで、コロンで区切られたパスを順番にトラバースします。 したがって、2つのパスに目的の実行可能ファイルが含まれている場合、Linuxは最初のパスを使用します。

PATH 環境変数をエコーすることにより、PATH変数の現在の値を出力できます。

echo $PATH

コロンで区切られたパスのリストが表示されます(正確なパスは異なる場合があります)。

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

3. Bashに新しいパスを追加する

export コマンドを使用して、PATH変数に新しいパスを追加できます。

/ some / new / path などの新しいパスを追加するには、 PATH 変数に、既存のPATH変数の先頭にある新しいパスを再割り当てします。 ( $ PATH で表されます):

export PATH=/some/new/path:$PATH

新しいパスを追加するには、PATHを最後にの新しいパスで再割り当てします。

export PATH=$PATH:/some/new/path

4. Bashの永続的な変更

export コマンドを使用して新しいシェルを開くと、追加されたパスが失われます。

4.1. ローカルで

現在のユーザーの変更を保持するには、エクスポートコマンドを〜/ .profile の最後に追加します。〜/.profileファイルがない場合存在する場合は、touchコマンドを使用して作成する必要があります。

touch ~/.profile

次に、 exportコマンドを〜/.profileに追加できます。

さらに、新しいシェルを開くか、〜/.profileファイルを入手して変更を反映する必要があります。 実行します:

. ~/.profile

または、Bashを使用している場合は、sourceコマンドを使用できます。

source ~/.profile

Bashを使用している場合は、 export コマンドを〜/ .bash_profile に追加することもできますが、変更は他のシェルには反映されません。 Zshとして。

エクスポートコマンドを〜/ .bashrc に追加しないでください。これは、インタラクティブBashシェルのみがこの構成ファイルを読み取るためです。 非対話型シェルまたはBash以外のシェルを開いた場合、PATHの変更は反映されません。

4.2. グローバルに

/etc/profile.d/に.shで終わるファイルを作成し、これに export コマンドを追加することで、Unixライクなシステムのすべてのユーザーに新しいパスを追加できます。ファイル。

たとえば、新しいスクリプトファイル /etc/profile.d/example.sh を作成し、次の行を追加して / some / new /pathをグローバルに追加できます。 パス:

export PATH=$PATH:/some/new/path

/etc/profile.d/ のすべてのスクリプトは、新しいシェルが初期化されるときに実行されます。 したがって、グローバルな変更を有効にするには、新しいシェルを開く必要があります。

/ etc /environmentファイルの既存のPATHに新しいパスを直接追加することもできます。

PATH=<existing_PATH>:/some/new/path

/ etc / environment ファイルはスクリプトファイルではなく、単純な変数の割り当てのみが含まれており、スクリプトよりも柔軟性がありません。 このため、 / etc /environmentPATHを変更することはお勧めしません。 代わりに、/etc/profile.dに新しいスクリプトを追加することをお勧めします。

5. Zshの$PATH

Zshは、優れた機能の豊富なセットを提供するため、人気が高まっています。 次に、Zshに新しいパスを追加する方法を見てみましょう。

5.1. Zshに新しいパスエントリを追加する

これまで、Bashに新しいパスを追加する方法を学びました。 まず第一に、これらのメソッドはZshでも機能します。

シェルがZshの場合、配列の方法で $PATH変数に新しいパスを追加できます。

zsh% echo $PATH 
/usr/local/bin:/usr/bin:/bin

zsh% path+=/a/new/path

zsh% echo $PATH
/usr/local/bin:/usr/bin:/bin:/a/new/path

上記の例が示すように、 path + = / a / new / pathを使用して、$PATHに新しいパスを追加しました。 小文字のパス+=…を使用したことに注意してください。

これは、pathが配列であるためです。 また、大文字のパートナーに相当する $PATHにも影響します。 Zshは、デフォルトでtypesetbuiltinを使用してこれら2つをバインドしています。

同様に、配列の方法で新しいパスを追加することもできます。

zsh% path=('/another/new/path' $path)

zsh% echo $PATH
/another/new/path:/usr/local/bin:/usr/bin:/bin:/a/new/path

ただし、パス配列に新しいエントリを追加した後は、Bash で行ったように、「export$PATH」を忘れないでください。

5.2. 永続的な変更

互換性のために、Zshは最初に .profile、をソースし、次にzshenvzshrcをソースします。 .profile内。 したがって、Zshの場合、設定をZsh固有の構成ファイルに入れるとよいでしょう。

bashrc ファイルと同様に、 / etc / zshrcまたは〜/.zshrcは対話型シェル専用です。 したがって、 $PATHを保存するのに理想的な場所ではありません。

したがって、すべてのZshユーザーに $ PATH 設定を持たせ、グローバルに$ PATHを効果的に設定する場合は、/ etc /zshenvに配置できます。 このファイルは存在しない可能性があり、グローバルに設定する場合は作成できます。

一方、ユーザーのみに$ PATHを設定する場合は、$ PATHを〜/.zshenvに配置できます。

6. 結論

この記事では、Linuxがコマンドの実行時にPATH変数を使用して実行可能ファイルを検索する方法を学びました。

PATH、に追加または追加できますが、これらの変更を永続化するには、PATH構成を適切な構成ファイルに配置する必要があります。

この表はそれを明確に要約することができます:

ローカル グローバル
バッシュ 〜/ .profile /etc/profile.dの.shファイル
Zsh 〜/ .zshenv / etc / zshenv