
コマンドラインでコマンドを入力すると、基本的に、指定された名前で実行可能ファイルを実行するようにシェルに指示します。 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ディストリビューションに適用されます。
ご不明な点がございましたら、お気軽にコメントをお寄せください。