回答:
./abc.py
「abc.py
現在のディレクトリにあるファイルを実行する」という意味です。
abc.py
「abc.py
シェルのディレクトリ検索パスで最初に見つかったファイルを実行する」という意味です。
abc.py
コマンド検索パス(PATH
環境変数で指定されたディレクトリの1つ)にある必要があります。./abc.py
は正確なパスです。abc.py
現在のディレクトリ(.
)から実行されます。
Unixの世界では、一般的なUnixコマンド(または一般的なスペルミス)にちなんで名付けられた実行可能ファイルが誤って実行される非常に単純な悪意のある攻撃を許可するため、パスに現在のディレクトリを置くことは悪い習慣と見なされます疑いを持たないユーザー。
たとえば、ありそうもないが、最も例証的な例は、攻撃者がrm
in という名前の実行可能ファイルを残し、/tmp
システム管理者が/tmp
ディレクトリを空にしようとするのを待つ場合です。
OSは、$ PATH変数にリストされているすべてのディレクトリで実行するプログラムを探します。通常、ローカルディレクトリ「./」はPATHにありません。追加することはできますが、これにはセキュリティ上の意味があります。
PATHに「./」を追加すると、誰かが「vi」というプログラムをディレクトリに配置し、誰かがviを使用してこのディレクトリ内の何かを編集しようとするのを待つことができます。だまされました...シングルユーザーシステムでは、これは深刻な問題ではないかもしれませんが、それでも悪い習慣です。
execvp()
代わりにを使用してOSに引き渡すことができexecv()
ます。
.
は、パスの最後ではなく、最初にある場合のみです。
./abc.pyを実行する必要があるのは、次の場合のみです。$ pathにありません。$ pathは、コマンドとしてコマンドを入力したときにプログラムを探す場所をシェルに指示する環境変数です。必要に応じて、特定の場所が組み込まれた別のシェルを使用できます。
PATH
し、どのような意味するはずです。
$PATH
ことで、包括的な答えを書くのに役立ちました。ちょうど言って:
abc.py
とエラーが発生します。