Linux で作業していると、ソースに関するかなり一般的なエラーに遭遇することがよくあります。このエラーはソースです:コマンドが見つかりません。今日は、それについて知っておく必要があるすべてのことを説明します.
この記事では、ソースとは何か、なぜこのエラーが発生するのか、そしてもちろん、その解決方法についても説明します。そのため、Linux システムで見つからないというエラー ソース コマンドが発生した場合は、読み続けてください。
まず、source コマンドとは正確には何ですか? ソースは実際の Linux ソフトウェア パッケージではないことを述べることが重要です 、適切なプログラムではありません。たとえば、du、egrep、find などです。ソースは組み込みコマンドです 、bash ソフトウェア パッケージの一部です。 .
それが何をするかを理解するには、まず、Linux のシェル変数と環境変数が何であるかを知る必要があります。 Linux システムで新しい SSH セッションを開くたびに、シェルはいくつかのデフォルト変数を自動的にロードします。これらの変数はほとんどのタスクで問題ありませんが、その他のタスクでは変更が必要になる場合があり、そこからソース コマンドがステージに入ります。
たとえば、スクリプトを実行するためにいくつかの変数を変更したい場合は、ソースを使用するのが最善の方法です。 Linux でスクリプトを実行する場合、ほとんどの場合、スクリプトはサブシェルで実行されるため、現在のシェル セッションと同じ環境では実行されません。カスタム変数を使用する必要がある場合は、ソースがそれを解決して使用します。
まず、現在のシェル環境で変数を定義する必要があります。それが完了したら、source を使用して、実行するスクリプトの環境を変更し、それを現在の環境にすることができます。これにより、実行中のスクリプトで新しい変数を使用できるようになります。
これは状況によっては非常に便利です。ソースを使ってさらに多くのことができますが、それはこの記事のポイントではありません。そのため、ソースの使用中に何か間違ったことをすると、エラーが発生する可能性があり、そのうちの 1 つはもちろんソース コマンドが見つかりません。このエラーの原因を見てみましょう。
Source コマンドが見つからない原因
通常、このエラーは「source:command not found」として、または sudo を使用している場合は「sudo:source:command not found」として表示されます。どちらの場合も、問題は、シェル セッションがプログラムの実行を予期していることです。 、ただし、ソースはプログラムではないことに注意してください 、以前に説明したように、実際には bash 組み込みを実行しています。
端末は「ソース」というプログラムを実行しようとしていると判断するため、見つからないというエラーをスローします。
このエラーは、システムにインストールされていないプログラムを実行しようとした場合にも発生します。たとえば、「somethingsomething」など、存在しないものを実行しようとすると、同じエラーが発生します:
[[email protected] ~]$ somethingsomething bash: somethingsomething: command not found
では、どうすればこれを解決できますか?それがこれから説明することです。
Linux でソース コマンドが見つからないというエラーを修正するにはどうすればよいですか?
この問題を解決する最も簡単な方法は、代わりに root を使用してコマンドを実行することです 、したがって、su を使用してルート セッションを開始する必要があります。 または sudo -s .認証エラーまたは権限エラーが発生した場合は、現在のユーザーで root としてログインできないことを意味します。担当者に権限の変更を依頼して、問題を解決するために一時的に root としてログインできるようにしてください。
root としてログインしたら、以前にソース エラーを返したコマンドを実行してみてください。今回は正常に実行されるはずです。
これを修正するもう 1 つの方法は、強制的に bash を使用することです .一部の Linux ディストリビューションでは、sh コマンドが bash を呼び出すのではなく、たとえば「dash」などの他のプログラムを呼び出すため、組み込みのソースはデフォルトで使用できません。したがって、この場合、実行しようとしているスクリプトを編集し、次のように上部の /bin/sh を /bin/bash に変更できます。
#!/bin/bash
3 つ目の解決策は、常に機能するとは限りませんが、ソースの代わりにドットを使用することです。 .はい、同じように動作するので、次のようなスクリプトを実行すると:
source ./myshinyscript
ソースをドットに置き換える必要があります。はい、ドット:
. ./myshinyscript
例のように、2 つのドットの間にスペースを入れることが非常に重要です。
結論
あなたが見たように、それはとても簡単でした。 source command not found エラーの本当の問題は、なぜそれが発生するのかを理解することです。これで、実際には Bash 組み込みプログラムであるのに、シェル セッションがプログラムのソースを間違えているために発生することがわかりました。
問題を解決するのは簡単であることを理解したら、実際に、スクリプトをルートとして実行する、スクリプトを変更して強制的に bash を実行する、またはソースの代わりにドットを使用するという 3 つの解決策を試すことができます。コマンドラインで。
ソース コマンドが見つかりませんが最後に変更されました:2020 年 4 月 9 日、エステバン ボルヘス