echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:.
上記の2つのパス変数の違いは何ですか?
これはコマンドのように実行可能ファイルを実行していることがわかりましたが、わかりません。
ベストアンサー1
パスに追加することは、.
シェルが現在のディレクトリの実行可能ファイルを考慮して実行可能ファイルを使用できなくなることを意味します。./
プレフィックスで入力が必要です。。あなたの場合は最後のものなので、他の一致がない場合にのみそのコマンドが実行されls
ます/bin/ls
。
これには一般的にいくつかの理由があります。いいえ推奨事項(上記のリンクを参照):
.
これはセキュリティに有害である可能性があります。誰かが頻繁にアクセスするディレクトリにバイナリを残して、誤って実行することを望むからです。最初のものではなく最後のものになるのは危険ではありません。- 現在のディレクトリなしでコマンドを実行することは、パスで最初に一致する
./
コマンドが使用されることを意味し、必ずしも現在のディレクトリにあるコマンドである必要はありません。