zsh
だから、、、、でファイルがどのように開くのか正確な順序を知りたいのですが.xinitrc
。だから私はシステムコールがどのように呼び出されるかを確認するためにそのコマンドで遊ぶことにしました、そして最終的にこのファイルをロードする方法を決めて注文することができました。.xprofile
.zprofile
strace
zsh
grep
open
私のコマンド:
strace zsh | grep open
ただし、このプログラムを実行すると、出力が表示され動作しなくzsh
なりgrep
ます。プロセスを終了してもctrl+d
何も起こりません。
grep
それでは、この過程でそのような結果を得る方法はありますか?
答え1
strace
デフォルトでは、出力をstderrに送信します。
ここでは、次のことができます。
strace -o >(grep --color open >&2) zsh
名前、パラメータ、または実行時に戻り値のzsh
すべてのシステムコールを表示するか、次の操作を行います。open
strace -e /open zsh
(の略語strace -e trace=/open zsh
)または:
名前に含まれるシステムコールを見てくださいopen
(例:open、openat、pidfd_open、mq_open、open_by_handle_at、perf_event_open。リストはシステムとバージョンによっては正確ではないかもしれません)。
または:
strace -e open,openat zsh
これら2つのシステムコールにのみ適用されます。
この出力は、シェルのプロンプトとコマンド出力とともに端末に送信されます。後でスキャンできるファイルに送信したり、別の端末またはscreen
/tmux
ウィンドウに送信したりすることをお勧めします。
strace -o >(grep --color open > strace.log) zsh
strace -e /open -o strace.log zsh
サブプロセスやそのサブプロセスで実行されるコマンドなど、サブプロセスで実行された呼び出しを追跡するには、この-f
オプションが必要です。
~/.xinitrc
したがって、システムを開く要素(そしてそれとは何の関係もありませんzsh
)とそれが利用可能な時期audit
(システムにデフォルトでインストール/アクティブ化されない可能性があります)を見てください。