Bash はエイリアスとシェル関数とコマンドをどういう順番で探索しているのか

www.gnu.org

www.gnu.org

www.gnu.org

これらを解釈するとこうなった。なるほど。

  • 入力された文字列をスペースで分割した先頭がパス区切り文字を含まない文字列だったら、エイリアスを展開する
  • 展開した結果がシェル関数に存在するならシェル関数を実行する
  • 展開した結果が組み込み関数に存在するなら組み込み関数を実行する
  • 環境変数 PATHディレクトリに実行可能な同名のファイルが存在するなら新しい環境を作成して実行する
    • 実行可能ファイルがシェルスクリプトだったら新しいシェルで実行する
    • 同名のファイルが見つからないとき、シェル関数 command_not_found_handle が定義されているなら実行する
  • カレントディレクトリ、および環境変数 PATHディレクトリに実行可能ではない同名のファイルが存在するならシェルスクリプトとして実行する
    • 今のシェルで実行する