Linuxでのファイル名と./filenameの違いは何ですか


回答:


18

データファイルの場合、違いはありません。両方のステートメントが現在のディレクトリのデータファイルを参照します。(例えば、cat filenameそしてcat ./filename意味的に同一です。)

問題のファイル名が実行可能ファイルを参照している場合、つまり、コマンドラインで最初に(または唯一)入力するのは、別の話です。./filename現在のディレクトリで実行可能ファイルを検索します。filename一方、は環境変数を評価し、そこに格納されているすべてのディレクトリ(現在のディレクトリを含む場合と含まない場合があります)PATHを探しfilenameます。

./filename/path/to/filenameしたがって、PATHで最初に見つかったものではなく、特定の実行可能ファイルを実行したい場合は(またはその他の)が推奨されます。


6

プログラムを実行している場合はfilename、最初に見つかったプログラムを実行するように指示$PATHし、2番目のプログラムは現在のディレクトリで実行するように指示します。

あなたはのようにプログラムへの引数としてそのファイル名を使用している場合do_something filenamedo_something ./filename、彼らは同じことを意味します。


5

あなたはコマンド実行について言及している、そうですか?

PATHセミコロンで区切られたいくつかのシステムディレクトリを含む環境変数があります。入力するとcommand、システムはこれらのディレクトリを指定された順序で検索して、<command>という名前の実行可能ファイルを見つけます。見つかった場合は、実行を試みます。あなたはあなたのPATHをecho $PATHbashで見ることができます。例えば:

$ echo $ PATH
/ sbin:/ bin:/ usr / sbin:/ usr / bin:/ usr / games:/ usr / local / sbin:/ usr / local / bin:/ home / ivanatora / bin:/ usr / local / kde4 / bin:/ usr / local / kde4 / bin

入力するとき./filenameは、正確なパス、つまり現在のディレクトリを指定します。現在のディレクトリが$ PATHにめったにないことがわかります(セキュリティ上の理由から)。したがって、現在のディレクトリからファイルを実行する場合は、を使用します./filename

パスでファイルを実行するには(特に$ PATHにない場合)<path>/file、次のように入力することもできます。

/ sbin / ifconfig


3

実行可能セキュリティがこの違いの主な理由です。

あなたがしたくない 。(現在の作業ディレクトリまたはPWD)パス内にあります。誰かがhttp://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 psやlsなどの重要な実行可能ファイルをPWDでトロイの木馬 にして、不正なデータを提示することであなたをだますためです。


1

それはあなたがそれをどのように使用しているかに依存します。

引数として、たとえば「プログラムファイル名」は、プログラム次第ですが、通常は同じです。

「ファイル名引数」などのプログラム名として、「ファイル名引数」はPATHを検索してバイナリを検索し、「./ファイル名引数」は現在のディレクトリのプログラムを使用します。これは明らかに次の場合に役立ちます。はPATHに含まれていませんが、これを使用しても便利です。おそらくパスが以前のエントリと一致しているためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.