技術ノート Linux Linux で $PATH にディレクトリを追加する方法

Linux で $PATH にディレクトリを追加する方法

Linux で $PATH にディレクトリを追加する方法

重要なポイント

  • PATH は、コマンドの実行時にオペレーティング システムがチェックする場所のリストであり、これにより、正確な場所を手動で指定しなくても実行可能ファイルを実行できます。
  • シェルは、シェルの組み込みから開始して、リストされたディレクトリを左から右に検索するという特定の順序で PATH 内の実行可能ファイルを検索します。
  • .bashrc または .profile ファイルを編集することで、export コマンドを使用して一時的に、または永続的にディレクトリを PATH に追加できます。セキュリティ上のリスクを避けるために、先頭にコロンを追加しないように注意してください。

PATH 、Linux コンピューターのバックグラウンドで動作するサイレント マニピュレーターの 1 つです。これはユーザー エクスペリエンスに静かに影響を与えますが、怪しいものは何もありません。これが何をするのか、そしてどのように調整できるのかについて説明します。

Linux の PATH とは何ですか?また、どのように機能しますか?

PATH は、コマンドを実行しようとするたびにオペレーティング システムがチェックする場所のリストです。実行しようとしている実行可能ファイルが PATH に含まれているフォルダーに含まれている場合、オペレーティング システムがその実行可能ファイルの場所をすでに認識しているため、正確な場所を手動で指定しなくても実行可能ファイルを実行できます。

では、実際に機能的にはどのように動作するのでしょうか?

ターミナル ウィンドウにコマンドを入力して Enter キーを押すと、コマンドが実行される前に非常に多くのアクティビティが開始されます。

Bash は 、ほとんどの Linux ディストリビューションのデフォルトのシェルです。入力したテキスト行を解釈し、パラメータ、 パイプ リダイレクト 、その他のものが混在したコマンド名を識別します。次に、それらのコマンドの実行可能バイナリを見つけて、指定されたパラメータを使用して起動します。

シェルが実行可能ファイルを見つけるために行う最初のステップは、バイナリが含まれているかどうかを識別することです。使用するコマンドがシェル自体 ( 「シェル組み込み」 ) 内にある場合、それ以上の検索は必要ありません。

シェル組み込みはシェルに統合されているため、見つけるのが最も簡単です。ツールベルトに入れているようなものです。いつでもそばにあります。

ただし、他のツールが必要な場合は、ワークショップを探し回って見つける必要があります。作業台の上にありますか、それとも壁掛けですか?それが PATH 環境変数の役割です。これには、シェルが検索する場所のリストと検索される順序が保持されます。

コマンド がシェル組み込み、エイリアス、関数、またはスタンドアロン バイナリ mv /work/unfile のいずれで あるかを確認したい場合は、以下に示すように type コマンドを使用できます。

タイプクリア

CDを入力してください

これは、 clear バイナリ ファイルであり、パス内で最初に見つかったファイルが /usr/bin にあることを示しています。コンピュータに複数のバージョンの clear インストールされている可能性がありますが、シェルが使用しようとするのはこれです。

当然のことながら、 cd シェルに組み込まれています。

Linux で $PATH にディレクトリを追加する方法

PATH をリストする方法

進路に何があるのか​​を簡単に確認できます。以下を入力して echo コマンドを使用し、 $PATH 変数に保持されている 値を出力するだけです

エコー $PATH

出力は、コロン ( : で区切られたファイル システムの場所のリストです。シェルはパスを左から右に検索し、コマンドを実行するために一致する実行可能ファイルがないかファイル システムの各場所を確認します。

リストから任意の方法を選択して、検索されるファイル システムの場所と検索される順序を確認できます。

  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin

すぐには分からないかもしれませんが、現在の作業ディレクトリでは検索が開始されないことです。むしろ、リストされたディレクトリ内でのみ動作します。

現在の作業ディレクトリがパスにない場合、そのディレクトリは検索されません。また、パスにないディレクトリにコマンドが保存されている場合、シェルはそれらを見つけられません。

これを実証するために、 rf という小さなプログラムを作成しました。 rf を実行すると、起動元のディレクトリの名前がターミナル ウィンドウに表示されます。これは /usr/local/bin にあります。 /dave/work ディレクトリには新しいバージョンもあります。

which コマンドを入力すると、シェルが プログラムのどのバージョンを見つけて使用するかが表示されます

どのRF

シェルは、見つかったバージョンがパス内のディレクトリにあるバージョンであると報告します。

次のように入力して起動します。

 RF

rf のバージョン 1.0 が実行され、予想が正しかったことが確認されました。見つかって実行されたバージョンは /usr/local/bin にあります。

このコンピュータで他のバージョンの rf を実行するには、以下に示すように、コマンド ラインで実行可能ファイルへのパスを使用する必要があります。

 ./work/rf

実行したい rf のバージョンを見つける場所をシェルに伝えたので、シェルはバージョン 1.1 を使用します。このバージョンを好む場合は、それを /usr/local/bin ディレクトリにコピーし、古いバージョンを上書きできます。

rf の新しいバージョンを開発しているとします。開発やテストを行う際には頻繁に実行する必要がありますが、未リリースの開発ビルドをライブ環境にコピーしたくありません。

あるいは、 rf の新しいバージョンをダウンロードし、一般公開する前に検証テストを行いたいと考えている場合もあります。

作業ディレクトリをパスに追加すると、シェルがバージョンを見つけます。そして、この変更は私たちにのみ影響します。他の人は引き続き /usr/local/bin にある rf のバージョンを使用します。

Linux で $PATH にディレクトリを追加する方法

ディレクトリを PATH に追加する

export コマンドを使用して、 ディレクトリを PATH に追加できます。このディレクトリは、シェルが検索するファイル システムの場所のリストに含まれます。シェルは一致する実行可能ファイルを見つけると検索を停止するため、 /usr/local/bin の前にディレクトリを検索するようにしてください。

これは簡単です。この例では、次のように入力してディレクトリをパスの先頭に追加し、最初に検索される場所になります。

エクスポート PATH=/home/dave/work:$PATH

このコマンドは、 $PATH を追加するディレクトリ /home/dave/work に設定し、その後、現在のパス全体に設定します。

最初の PATH にはドル記号 ( $ ) がありません。 PATH の値を設定します。 PATH 変数に格納されている内容を参照しているため、最後の $PATH ドル記号が付いています。また、新しいディレクトリと $PATH 変数名の間にあるコロン ( : に注意してください。

パスがどのようになるかを見てみましょう。

エコー $PATH

/home/dave/work ディレクトリがパスの先頭に追加されます。指定したコロンは、パスの残りの部分を区切ります。

次のように入力して、 rf のバージョンが最初に見つかったバージョンであることを確認します。

どのRF

以下に示すように、プリンの証明は rf 実行しています。

 RF

シェルはバージョン 1.1 を見つけて /home/dave/work から実行します。

ディレクトリをパスの末尾に追加するには、次のようにコマンドの末尾にディレクトリを移動するだけです。

エクスポート PATH=$PATH:/home/dave/work 

Linux で $PATH にディレクトリを追加する方法

PATH に永続的に何かを追加する方法

ベス・ブルック=マルシニアック が言ったように、「成功するのは良いことですが、成功は儚いものです。」ターミナル ウィンドウを閉じると、 $PATH に加えた変更はすべて失われます。それらを永続的にするには、設定ファイルに export コマンドを含める必要があります。

.bashrc ファイルに export コマンドを入れると、ターミナル ウィンドウを開くたびにパスが設定されます。ログインする必要がある SSH セッション とは異なり、これらは「対話型」セッションと呼ばれます。

以前は、 .profile ファイルに export コマンドを記述して、ターミナル セッションのログイン用のパスを設定していました。

ただし、 export コマンドを .bashrc ファイルまたは .profile ファイルに置くと、対話型セッションとログイン ターミナル セッションの両方のパスが正しく設定されることがわかりました。あなたの経験は異なるかもしれません。あらゆる不測の事態に対処するために、両方のファイルでそれを行う方法を示します。

/home ディレクトリで次のコマンドを使用して、 .bashrc ファイルを編集します。

 gedit .bashrc

gedit エディター が開き、 .bashrc ファイルがロードされます。

ファイルの一番下までスクロールし、前に使用した次のエクスポート コマンドを追加します。

エクスポート PATH=/home/dave/work:$PATH

ファイルを保存します。次に、次のようにターミナル ウィンドウを閉じて再度開くか、 dot コマンドを使用して .bashrc ファイルを読み取ります。

. .bashrc 次に、次の echo コマンドを入力してパスを確認します。

エコー$PATH

これにより /home/dave/work ディレクトリがパスの先頭に追加されます。

コマンドを .profile ファイルに追加するプロセスは同じです。次のコマンドを入力します。

 gedit .profile

gedit エディターが起動し、 .profile ファイルがロードされます。

ファイルの最後に export コマンドを追加し、保存します。 .profile ファイルを強制的に再読み込みするには、新しい端末ウィンドウを閉じてから開くだけでは不十分です。新しい設定を有効にするには、ログアウトして再度ログインするか、以下に示すように dot コマンドを使用する必要があります。

 。 。プロフィール

Linux で $PATH にディレクトリを追加する方法

全員にパスを設定する

システムを使用するすべてのユーザーのパスを設定するには、 /etc/profile ファイルを編集します。

次のように sudo を使用する必要があります。

 sudo gedit /etc/profile

gedit エディターが起動したら、ファイルの最後にエクスポート コマンドを追加します。

ファイルを保存して閉じます。変更は、他のユーザーが次回ログインしたときに有効になります。

Linux で $PATH にディレクトリを追加する方法

セキュリティに関する注意事項

以下に示すように、パスの先頭に誤ってコロン「 : 」を追加しないように注意してください。

これを行うと、最初に現在のディレクトリが検索されるため、セキュリティ上のリスクが生じます。アーカイブ ファイルをダウンロードし、ディレクトリに解凍したとします。ファイルを見ると、別の zip ファイルが表示されます。もう一度 unzip を呼び出して、そのアーカイブを抽出します。

最初のアーカイブに、悪意のある実行可能ファイルである unzip という実行可能ファイルが含まれていた場合、実際の unzip 実行可能ファイルの代わりに、誤ってその実行可能ファイルを起動してしまいます。これは、シェルが最初に現在のディレクトリを検索するために発生します。

したがって、 export コマンドを入力するときは常に注意してください。 echo $PATH を使用してそれらを確認し、希望どおりであることを確認します。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Linux で $PATH にディレクトリを追加する方法」に関するベスト動画選定!

【Linuxコマンドの基本01】 ファイルを管理する Bash上でファイル、ディレクトリを作る、消す、そして、ファイルとはなにか、ディレクトリとは? 初心者にわかりやすく解説。
【9分で解説】Linux入門|ディレクトリ構造( bin とは何か?)