すべてのシステム管理者は、シェルで少なくとも1回このエラーを受け取りました:「 bash:コマンドが見つかりません 「。
ただし、コマンドを正しく記述したこと、または実際に実行しようとしているツールをインストールしたことはほぼ確実でした。
では、なぜこのエラーが発生するのですか?
「bash:コマンドが見つかりません 」エラーは、Bash端末でコマンドを実行するときにさまざまな理由で発生する可能性があります。
今日は、「コマンドが見つかりません」を解決するためのさまざまな方法を検討しています。 」Bashのエラー。
BashとPATHの概念
ソリューションを開始する前に、PATH環境変数についていくつかの概念を理解しておくことが重要です。 とは、実行するコマンドとどのように関連しているかです。
PATHは、システム上のユーティリティを見つけるためにbashターミナルがアクセスするさまざまなディレクトリを一覧表示する環境変数です。
PATH環境変数を確認するには、「 echo」を使用するだけです。 」コマンドとPATH 変数。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ご覧のとおり、PATHは、コロンで区切られたさまざまなシステムパスのリストによって定義されます。
これらは、コマンドを実行するために通訳者がアクセスするさまざまなパスです。
PATHからエントリを削除したり、PATHをまとめて削除したりすると、バイナリへのパス全体を指定しないと、bashでコマンドを実行できなくなります。
コマンドを実行できないからといって、システムからバイナリが削除されたわけではないので、理解しておくことが重要です。
環境変数がbashインタープリターにどのように関連しているかを理解したので、エラーを解決する方法を見てみましょう。
ファイルがシステムに存在することを確認します
このエラーを解決するための最初のステップは、探しているコマンドが実際にシステムに存在することを確認することです。
コマンドのつづりを間違えたり、まったくインストールしなかったりした場合、それ以上のポイントはありません。
たとえば、「 ls」を実行できないとします。 " 指図。
システムでバイナリを検索して、バイナリが実際に存在することを確認します。
$ /usr/bin/find / -name ls 2> /dev/null
/bin/ls
/usr/lib/klibc/bin/ls
findコマンドを使用すると、バイナリとそれが保存されているディレクトリを見つけることができます。
このパスをPATH環境変数に追加する必要があるため、これは非常に重要です。 後で。
PATH環境変数を確認してください
ほとんどの場合、「 bash:コマンドが見つかりません」に遭遇します 」新しいエントリを追加するためにPATH環境を変更した後。
まず、前に検索したパスがPATH環境変数にリストされていることを確認します。
$ echo $PATH
/home/user/custom:/home/user
ここでわかるように、「/bin」ディレクトリはではありません PATH環境変数にリストされています。
デフォルトでは、PATHはシステム上のすべてのユーザーの「/ etc/environment」ファイルで定義されています。
PATH環境変数が環境ファイルで定義されているものと異なる場合は、PATHをオーバーライドしたためです。
これで、2つの選択肢があります。PATH変数をどこにエクスポートしたかを知っているか、知らないかのどちらかです。
プロファイルスクリプトの修正:bashrc、bash_profile
ほとんどの場合、 .bashrcを変更しました または.bash_profile PATHオーバーライドを追加するためのファイル。
パスをエクスポートした場所を検索するには 、次のコマンドを実行します
$ /usr/bin/grep -rn --color "export PATH" ~/. 2> /dev/null
./.bashrc:121:export PATH="/home/devconnected"
このコマンドは、PATHがエクスポートされたファイルと行番号を返します。
このファイルを編集して、最初のセクションからエクスポートステートメントへのパスを追加します。
$ nano /home/user/.bashrc
export PATH="/home/devconnected:/bin"
ファイルを保存して、nanoエディターを終了します。
変更を適用するには、現在のbashターミナルを調達する必要があります。
これにより、.bashrcファイルが現在のシェルターミナルで再度実行されるようになります。
$ source .bashrc
フルパスを指定せずにソースを実行できるのはなぜですか?
「ソース」はシェル組み込みコマンドであるため 。
たとえば「builtinsource.bashrc」を実行してみてください
これで、以前に実行できなかったコマンドの実行を試みることができます。
$ ls
file devconnected file2 directory1 swap file3
素晴らしい !
「bash:コマンドが見つかりません」を修正しました Linuxでのエラー!
PATH環境変数を適切にリセットします
問題を解決したとしても、bashrcファイルを常に変更したくない場合は、PATH環境変数を適切に定義する必要があります。
まず、「/ etc/environment」ファイルで定義されているPATH変数を見てください。
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
環境でPATH環境変数をリセットするには、環境ファイルで定義されているPATHをエクスポートします。
$ export=PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
ここで、.bashrcファイルを変更しますが、既存のPATH変数にパスを追加するために$PATH構文を使用します。
$ sudo nano ~/.bashrc
export PATH="$PATH:/home/devconnected"
ファイルを終了し、bashrcファイルを入手して変更を適用します。
$ source ~/.bashrc
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/devconnected
素晴らしい !
PATH環境変数を正常にリセットしました。「bash:コマンドが見つかりません」を取得しないでください。 」エラーはもうありません。
コマンドをsudoとして実行します
場合によっては、PATH環境変数が完全に構成されている可能性がありますが、コマンドをsudoとして実行する必要があります。
このエラーが発生するか、単純な「許可が拒否されました 」エラー。
いずれの場合も、最初にsudoコマンドでsudo権限を持っていることを確認してください。
$ sudo -l
User user may run the following commands on ubuntu:
(ALL : ALL) ALL
この場合、コマンドをsudoとして実行できるはずです。
$ sudo <command>
おめでとうございます !
「bash:コマンドが見つかりません」を解決しました 」システムのエラー。
パッケージが正しくインストールされていることを確認します
場合によっては、コマンドはインストールされていると思いますが、そもそもコマンドをインストールしていません。
たとえば、「 htop」を実行しようとしているとします。 」コマンドですが、実行できません。
$ htop
bash : Command 'htop' not found
ディストリビューションに応じて、コマンドが正しくインストールされているかどうかを確認するには、次のコマンドを実行します。
$ dkpg -s htop [Ubuntu/Debian]
dpkg-query: package 'htop' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
$ rpm -qa | grep htop [CentOS/RHEL]
いずれの場合も、コマンドを正しく実行するには、コマンドをインストールする必要があります。
$ sudo apt-get install htop [Ubuntu/Debian]
$ sudo yum install htop [CentOS/RHEL]
これで、欠落していたコマンドを実行してみることができます。
$ htop
結論
このチュートリアルでは、有名な「 bash:コマンドが見つかりません」を解決する方法を学びました。 」多くのシステム管理者が毎日遭遇するエラー。
ないソリューションで問題を解決する場合 記事に記載されているように、他の管理者を支援するためにコメントを残してください。
Linuxシステム管理に興味がある場合は、Webサイトに専用のセクションがありますので、必ずご覧ください。