なぜいくつかのbashコマンドは明示的なパスを必要とし、いくつかはそうではないのか理解できません。
明示的なパスを必要とするコマンドの完全なリストはありますか?
実際のケース:
chmod +x 2copyQ.tmp.sh ;
./2copyQ.tmp.sh ;
これは有効か次のとおりです。No such file or directory
はいが機能しません:
chmod +x 2copyQ.tmp.sh ;
2copyQ.tmp.sh ;
2copyQ.tmp.sh: command not found
ベストアンサー1
明示的なパスを必要とするコマンドの完全なリストはありますか?
短い答え:そのようなリストはありません。
長い答え:
ほとんどの対話型シェルでは、コマンドは$PATH
変数を使用して取得されます。PATH
実行可能ファイルを見つけるためのコロンで区切られたディレクトリのリスト。
サンプルは PATH
次のとおりです。
/home/archemar/bin:/usr/local/bin:/usr/sbin:/usr/bin
(実際にはPATH
はるかに長いです)
コマンドを出すときfoo
、
- シェルは、存在しないディレクトリを自動的に無視し、リストされたディレクトリ
foo
で指定された実行可能ファイルを左から右に検索します。PATH
- 実行可能ファイルが見つかると、
foo
シェルはそれを実行します。 - 見つからないと
foo: command not found
エラーが発生します。
game1/foo
相対ファイル名(、、./foo
)または絶対ファイル名()を使用すると、/opt/tomcat/bin/start.sh
シェルはファイルを見つけて実行します(見つからない場合は文句を言います)。
シェルが現在のディレクトリで実行可能ファイルを検索できるようにするには、.
(local dir)を追加しますPATH
。
.:/home/archemar/bin:/usr/local/bin:/usr/sbin:/usr/bin
セキュリティ上の理由から追加することは悪い習慣と見なされ.
ます。PATH