``./```が必要な実行ファイルとそうでない実行ファイルの違いは何ですか?

``./```が必要な実行ファイルとそうでない実行ファイルの違いは何ですか?

次の違いは何ですか?

./executableそしてexecutable。いくつかの実行可能ファイル(Linux以外のコマンド)が時々必要ない理由は何ですか./

makefile(物理コード)を介して実行可能ファイルをインストールした場合は、それらをアンインストールして最新バージョンをインストールするにはどうすればよいですか?コードを削除するだけでrm十分ですか?この場合、実行可能ファイルの実行には必要ありません。./

答え1

UNIX環境(およびDOSやWindowsなどの他のシステムでも)では、シェルは特定のディレクトリで実行可能ファイルを見つけます。 Unix環境ではPATH変数として定義されます。PATH次のコマンドを実行して、変数のディレクトリを確認します。

$ echo $PATH

結果は次のようになります。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

ご覧のとおり、変数はコロンで区切られたディレクトリのリストです。たとえば、コマンドを実行すると、lsシステムはリストの最初のディレクトリ(たとえば/usr/local/sbin)から実行可能ファイルを検索します。ここで指定されたファイルが見つからない場合は、ls見つかるまで次のディレクトリを試してください。したがって、lsコマンドが存在する場合は/usr/bin実行されます。あるいは、シェルがどこからでもコマンドを見つけることができない場合、コマンドが見つからないというエラーが表示されます。

しかし、実行可能ファイルを呼び出す別の方法があります。ls2つのディレクトリに名前が付けられた2つのプログラムがあり、PATH2番目のプログラムを実行したいとします。これを行う方法はおそらくランニングなので、/usr/bin/ls希望の方法を指定できます。

これは.現在のディレクトリへのショートカットです。したがって、/home/userにいる場合は./configureショートカットです/home/user/configure

PATHその場所を見つけて削除すると、ファイルを削除できます。ただし、ほとんどの最新のディストリビューション(rpm、dpkg、pacmanなど)で利用可能なパッケージマネージャを使用して、システムにインストールされているバイナリを管理することをお勧めします。 Makefileが複数の実行可能ファイルを生成する場合は、この方法で削除するのが簡単になります。また、makefileはいくつかのライブラリファイルや他のいくつかのエントリを生成することができるので、パッケージ管理ツールを使用する方が簡単です。場合によっては、Makefileがアンインストールルーチン(make uninstallなど)を呼び出すことができますが、どのくらいの頻度で発生するのかわかりません。プログラムを新しいメイクファイルに更新すると、新しいメイクファイルは古いmake installバイナリを置き換えることができますが、これは保証されません。

を実行すると、いつでもコマンド実行可能ファイルが何であるかを確認できますwhich。たとえば、どこにいるのか知りたい場合ls

$ which ls
/usr/bin/ls

関連情報