bash
には と呼ばれる内部コマンドがありkill
、Linux には と呼ばれる外部コマンド (プログラム) もありますkill
。
kill
で実行するとbash
、内部コマンドkill
が実行されます。
質問が2つあります。
- デフォルトで内部コマンドの代わりに外部コマンドが実行されるように変更できる設定はありますか (もちろん、外部コマンドのフルパスを指定しなくても)。
- すべての(主要な)シェルで、デフォルトで外部コマンドの代わりに内部コマンドが実行されるのは標準的な動作ですか、それとも単なる慣例ですか
bash
?
答え1
env
呼び出しに使用します。$ env kill kill: not enough arguments $ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
すべてのシェルとコマンド プロセッサ。
答え2
最初の質問に対する回答: はい、デフォルトで内部コマンドではなく外部コマンドを実行する設定があります。
組み込みをオフにするには
enable -n COMMAND
組み込みを有効にするには
enable COMMAND
または、コマンドの優先順位を変更することもできます。bashコマンドの優先順位は次のとおりです:
- 別名、最高
- 関数
- 組み込み
- $PATH 内の外部コマンド
2 番目の質問について: 内部コマンドが外部コマンドよりも優先されると常に想定できると思います。これは bash に限ったことではありません。