私はLinuxのいくつかのカーネルレベルの概念を理解しようとしています。違いを確認しています。内蔵ケースコマンドおよび他の実行可能なコマンド。
この素晴らしい答え違いは明確に示されており、シェル組み込みコマンドの必要性が指定されています。
これで使い方がわかったので、type <command-name>
外部コマンドかシェル組み込みかを確認できます。
strace
そのため、内部をより理解するために、さまざまなコマンドを使用して操作を行うことにしました。
私は学んだこのきちんとした小さなトリックstrace
シェル組み込みコマンドに対して 'es' 操作を実行します。上記の答えに基づいて、私もstrace
これを行うことができました。cd ..
今実行してtype pwd
出力を取得したらpwd is a shell builtin
。strace
しかし、いざ仕事をしてみると、作業を行うために何もする必要がないというstrace
事実に驚きました。strace
stty
私も確認してみましたが、strace
とてもecho
上手です。
したがって、私が理解しているのは、これがシェルstrace
の実行の場合に機能し、シェルの動作を変更しないためです。pwd
echo
pwd
echo
私の理解は正しいですか?
答え1
または同じ名前の外部コマンドpwd
があります。出力を見ると、次のことがわかります。echo
/bin/pwd
/bin/echo
strace
$ strace pwd
execve("/bin/pwd", ["pwd"], [/* 68 vars */]) = 0
brk(0) = 0x241e000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f80c31b9000
で検索するときは、PATH
実行strace
ビットが設定されている通常のファイルのみが許可されます。