Terinspirasi oleh pertanyaan ini, berjudul: Kapan perintah bawaan dimuat ke memori , ketika mencoba menjawab ini saya mencoba perintah berikut dan sedikit terkejut bahwa saya tidak bisa menjalankannya:
$ strace cd $HOME
Apakah ada metode yang dapat saya gunakan untuk menjalankan strace untuk perintah builtin ke Bash?
strace
tidak menjalankan program tidak menghasilkan jejak?Jawaban:
Jika Anda berpikir tentang cara
strace
kerjanya maka masuk akal jika tidak ada bawaan untuk Bash yang dapat dilacak.strace
hanya bisa melacak executable yang sebenarnya, sedangkan yang builtin tidak.Sebagai contoh,
cd
perintah saya :Trik untuk strace'ing cd?
Saya menemukan teknik ini di mana Anda bisa meminta proses yang
strace
sebenarnyabash
dan dengan demikian, secara tidak langsung melacaknyacd
.Contoh
Yang menghasilkan saya bisa strace
bash
proses sebagai berikut:Ini adalah prompt Bash, di mana ia duduk di sana, menunggu beberapa masukan. Jadi mari kita beri perintah
cd ..
:Dari output di atas, Anda dapat melihat di mana saya mengetik perintah,
cd ..
dan tekan enter, (\n
). Dari sana Anda dapat melihat bahwastat()
fungsi itu dipanggil, dan setelah itu Bash duduk diread(0..
prompt lain , menunggu perintah lain.sumber
Untuk
strace
shell lakukancd /some/dir
:sumber
$1
sini, untukbash
, seharusnya ini tidak menjadi%
atau%1
?Anda dapat mencoba yang berikut ini:
Sebagai contoh:
sumber