Mountain Lion でコマンドを実行するにはなぜ ./ が必要なのでしょうか?

Mountain Lion でコマンドを実行するにはなぜ ./ が必要なのでしょうか?

重複の可能性あり:
パスを指定するときの「/」、「./」、「../」は何を表していますか?

./Mountain Lion でコマンドを実行する必要があるのはなぜですか?

たとえば、mysql を使用する場合は、ターミナルに次のように入力する必要があります。

./mysql -u itsme -p

./また、コマンドライン アプリケーションを作成し、ファイルを実行可能にしているので、次のようにを使用してコマンドを実行する必要があります...

./myawesomeapp dothis

現在のディレクトリを意味することはわかっています./が、それを使用せずにコマンドを実行するにはどうすればよいでしょうか?

答え1

バイナリのあるディレクトリを環境変数に入れると、パス(つまり)PATHを指定せずに呼び出すことができます。./

おそらくシェルとしてbashを使用していると思います( を実行して確認できますecho $SHELL)。その場合は、次の行を.bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

答え2

実行可能ファイルは、環境変数にリストされているディレクトリの 1 つにインストールする必要があります$PATH

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

$PATHファイルを変更して調整します~/.profile

export PATH=$PATH:/Users/me/bin

./追加することで を常に無視することは可能ですが、個人のマシン上ではなくても、サーバーを操作する際に悪い習慣を持ち越すと、セキュリティ上の問題が発生する可能性があります。.$PATH

答え3

$PATH 変数に追加することは可能ですが.、絶対にしないことをおすすめします。ファイルシステム内のランダムな場所を歩き回って、プログラム ( viemacslspsなど) を実行すると思われる何かを入力すると、ローカル ディレクトリ内のファイルが実行候補になります。運が悪ければ、それは実行したいプログラムではありません。 として実行している場合はさらに悪い状況になります。なぜなら、誰かが、実際とはまったく異なることを行うrootローカル ファイルを追加する可能性があるからです(もちろん、実際の ls も実行します。そうでなければ、実際の ls ではないことは明らかであり、ユーザーは状況を調査し始めるでしょう)。[1]lsls

代わりに、実行可能ファイルがある場所への絶対パス (例/projects/mycurrentprojects/bin: または「ホームからの相対パス」)を追加する必要があります~/bin。すべての状況でパスが機能するようにしたい場合は、home\mats\bin[当然のことながら、自分用の正しいユーザー名を使用する] を使用することをお勧めします。この方法では、特定のディレクトリ セット内のファイルのみが適用可能になり、どこにいても、その特定のディレクトリ内のプログラムのみが「実行可能な候補」として選択されます。

[1] はい、検索順序やその他のさまざまな要素もここでは重要になることを理解しています。しかし、どのような反対意見があっても、「現在のディレクトリ」を追加することは一般的に良い考えではありません。

関連情報