「出口」はどこで定義されていますか?

「出口」はどこで定義されていますか?

追加のタスクを実行するためにbashコマンドを使用したいとします。簡単な例として、実行する前に「123」をエコーするようにしたいとします。

簡単な方法は、コマンドにエイリアスを追加することです。それでも元のファイルが必要なので、それを使用して見つけることができる正確なパスでそれを参照できますwhich。たとえば、

$ which rm
/bin/rm
$ echo "alias rm='echo 123 && /bin/rm'" >> .bashrc

rmを利用して照会できて簡単でしたwhich

しかし、私はこれを行うためにそれを使用しようとしていますが、それを理解できないようですexitwhich

$ which exit
$ echo $?
1

このコマンドには出力パスはありません。実際にwhichコマンドがない場合は、ゼロ以外の終了コードを返します$PATH

私はこれが関数かもしれないと思いましたが、明らかにそうではありません。

$ typeset -F | grep exit
$ echo $?
1

したがって、exitコマンドはどこにも関数やコマンドで定義されていませんが$PATH、入力するとexit端末が閉じます。どうやらどこかに定義されていますが、どこにいるのかわかりません。

これはどこで定義されており、どのように明示的に呼び出すことができますか?

ベストアンサー1

exit殻です特殊内蔵注文する。それ立てられるシェルインタプリタを使用すると、シェルはこれについて知っており、検索することなく直接実行できます。

ほとんどのシェルでは、次のものを使用できます。

$ type exit
exit is a shell builtin

組み込み機能の実装方法を理解するには、シェルのソースコードを読む必要があります。ここにソースコードへのリンクがあります。bash内蔵終了

bash、、、、、、使用するzsh組み込みコマンドを明示的に呼び出すには、組み込みコマンドを使用します。ksh93mkshpdkshexitbuiltin

builtin exit

バラより組み込みシェルを明示的に呼び出すには?詳細については。

おすすめ記事