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番目の質問:内部コマンドが外部コマンドよりも優先されると常に想定できると思います。これは単にバッシュの仕事ではありません。