知りたいです。注文する私たちがシェルで呼んでいるのは 機能またはプログラム。
ベストアンサー1
時々違うよね
コマンドは、組み込みコマンド、エイリアス、関数、実行可能ファイル(検索パスのスクリプトとバイナリ)など、さまざまなカテゴリに分類できます。
コマンドラインは単一の単純な名前空間を占めるため、オーバーライドが可能です。さまざまな種類のプログラムを区別する方法はいくつかあります。
$ f () { :; }
$ alias a=cat
$ which f
f ()
{
:
}
私たちはこれがf
機能であることを知っています。
$ which a
alias a='cat'
/usr/bin/cat
私たちはこれがa
エイリアスであることを知っています。
$ which yes
/usr/bin/yes
私たちはこれがyes
プログラムであることを知っています。
$ builtin echo ; echo $?
0
エンクロージャには内蔵型echo
…
$ builtin cat ; echo $?
bash: builtin: cat: not a shell builtin
1
…しかし、一つもありませんcat
。組み込み関数やエイリアスがありますが、プログラム呼び出しに固執する場合は、コマンドの前にバックスラッシュを追加してください。
$ builtin true | printf "%d\n" $?
0
$ alias true=false
$ true ; printf "%d\n" $?
1
$ \true ; printf "%d\n" $?
0