コマンドラインでコマンドを入力すると、基本的に、指定された名前で実行可能ファイルを実行するようにシェルに指示します。 Linuxでは、lsのようなこれらの実行可能プログラム 、find 、file その他は、通常、システム上のいくつかの異なるディレクトリ内にあります。これらのディレクトリに保存されている実行可能権限を持つファイルは、どこからでも実行できます。実行可能プログラムを保持する最も一般的なディレクトリは/binです。 、/sbin 、/usr/sbin 、/usr/local/bin および/usr/local/sbin 。
しかし、シェルはどのようにして実行可能プログラムを検索するディレクトリを知っているのでしょうか。シェルはファイルシステム全体を検索しますか?
答えは簡単です。コマンドを入力すると、シェルはユーザー$PATHで指定されたすべてのディレクトリを検索します その名前の実行可能ファイルの変数。
この記事では、$PATHにディレクトリを追加する方法を説明します。 Linuxシステムの場合。
$PATHとは Linuxの場合#
$PATH 環境変数は、実行可能ファイルを検索するディレクトリをシェルに指示する、コロンで区切られたディレクトリのリストです。
$PATHにあるディレクトリを確認するには 、printenvのいずれかを使用できます またはecho コマンド:
echo $PATH 出力は次のようになります:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
同じ名前を共有する2つの実行可能ファイルが2つの異なるディレクトリにある場合、シェルは$PATHの最初にあるディレクトリにあるファイルを実行します。 。
$PATHに追加する #
$PATHに他のディレクトリを追加したい場合があります 変数。たとえば、一部のプログラムは別の場所にインストールされている場合や、個人用スクリプト専用のディレクトリが必要な場合がありますが、実行可能ファイルへの絶対パスを指定しなくても実行できます。これを行うには、ディレクトリを$PATHに追加するだけです。 。
binというディレクトリがあるとします。 シェルスクリプトを保存するホームディレクトリにあります。ディレクトリを$PATHに追加するには 次のように入力します:
export PATH="$HOME/bin:$PATH"
export コマンドは、変更された変数をシェルの子プロセス環境にエクスポートします。
これで、ファイルへのフルパスを指定しなくても、実行可能スクリプト名を入力してスクリプトを実行できます。
ただし、この変更は一時的なものであり、現在のシェルセッションでのみ有効です。
変更を永続的にするには、$PATHを定義する必要があります シェル構成ファイルの変数。ほとんどのLinuxディストリビューションでは、新しいセッションを開始すると、環境変数が次のファイルから読み取られます。
-
/etc/environmentなどのグローバルシェル固有の構成ファイル および/etc/profile。新しいディレクトリをすべてのシステムユーザーに追加する場合は、このファイルを使用します$PATH。 -
ユーザーごとのシェル固有の構成ファイル。たとえば、Bashを使用している場合は、
$PATHを設定できます。~/.bashrcの変数 ファイル。 Zshを使用している場合、ファイル名は~/.zshrcです。 。
この例では、変数を~/.bashrcに設定します ファイル。テキストエディタでファイルを開き、ファイルの最後に次の行を追加します。
nano ~/.bashrc 〜/ .bashrc export PATH="$HOME/bin:$PATH"
ファイルを保存し、新しい$PATHをロードします sourceを使用して現在のシェルセッションに コマンド:
source ~/.bashrc
ディレクトリが正常に追加されたことを確認するには、$PATHの値を出力します 次のように入力します:
echo $PATH 結論#
ユーザーまたはグローバル$PATHに新しいディレクトリを追加する 変数は非常に単純です。これにより、実行可能ファイルへのフルパスを入力しなくても、非標準の場所に保存されているコマンドやスクリプトを実行できます。
同じ手順が、Ubuntu、CentOS、RHEL、Debian、LinuxMintなどのすべてのLinuxディストリビューションに適用されます。
ご不明な点がございましたら、お気軽にコメントをお寄せください。