如何在不更改当前 shell 的情况下在 shell 上执行 strace?

如何在不更改当前 shell 的情况下在 shell 上执行 strace?

我用来strace跟踪进程的行为bash。目的是找出bash加载其配置文件的顺序。

我正在运行以下命令zsh

strace -e openat bash

运行此命令后,我最终进入一个新的bashshell,但我不希望这种情况发生。有没有办法bash在不实际启动新的bash交互式 shell 的情况下跟踪命令?

我在网上搜索但找不到任何东西。我正在尝试使用exec: strace -e openat "$(exec bash)" 2>&1,但我的 shell 仍然更改为bashfrom zsh

答案1

您可以要求bash立即退出,并强制其表现得​​像交互式和/或登录 shell:

strace -e openat bash -i -c exit

添加-l以使其bash像交互式登录 shell 一样工作。

请注意,这还将显示退出时读取的文件(.bash_logout等)。

相关内容