strace はいくつかの組み込みコマンドで動作します。

strace はいくつかの組み込みコマンドで動作します。

私はLinuxのいくつかのカーネルレベルの概念を理解しようとしています。違いを確認しています。内蔵ケースコマンドおよび他の実行可能なコマンド。

この素晴らしい答え違いは明確に示されており、シェル組み込みコマンドの必要性が指定されています。

これで使い方がわかったので、type <command-name>外部コマンドかシェル組み込みかを確認できます。

straceそのため、内部をより理解するために、さまざまなコマンドを使用して操作を行うことにしました。

私は学んだこのきちんとした小さなトリックstraceシェル組み込みコマンドに対して 'es' 操作を実行します。上記の答えに基づいて、私もstraceこれを行うことができました。cd ..

今実行してtype pwd出力を取得したらpwd is a shell builtinstraceしかし、いざ仕事をしてみると、作業を行うために何もする必要がないというstrace事実に驚きました。stracestty

私も確認してみましたが、straceとてもecho上手です。

したがって、私が理解しているのは、これがシェルstraceの実行の場合に機能し、シェルの動作を変更しないためです。pwdechopwdecho

私の理解は正しいですか?

答え1

または同じ名前の外部コマンドpwdがあります。出力を見ると、次のことがわかります。echo/bin/pwd/bin/echostrace

$ 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ビットが設定されている通常のファイルのみが許可されます。

関連情報