如何确定我的 ~/Shell 目录中的哪些脚本导致我的 ~/.zshrc 文件加载时间过长?

How to determine which scripts in my ~/Shell directory are causing my ~/.zshrc file to take so long to be loaded?

我有一个 ~/.zshrc 文件执行我的 ~/Shell 目录中的所有顶级 shell 脚本,这些顶级脚本依次执行较低级别的脚本。例如,~/Shell/programs 中的脚本(即所谓的 "lower-level scripts")由顶级 ~/Shell/09-programs.sh 脚本执行。我最近注意到 运行 ~/.zshrc 变得比以前慢得多,我想知道是否有任何方法可以确定我的 [=12] 中的哪个脚本(或一组脚本) =] 目录导致它变得如此缓慢。了解每个脚本中导致脚本变得如此缓慢的精确行号也会很有帮助。如果您想查看我的 ~/.zshrc 文件和 ~/Shell 脚本 here 是我定期更新的 GitHub 存储库。

PS4=':[%*]:%x:%I+' zsh -x -l -i

将 运行 一个新的登录 shell 执行的每一行前面都有一个精确到秒的时间戳、定义它的文件名和行号。


顺便说一句,bash 相当于这个看起来像:

PS4=':[\t]:$BASH_SOURCE:$LINENO+' bash -x -l -i

...虽然就个人而言,在那种情况下我可能会使用 $SECONDS 而不是 \t,以获得自 shell 调用以来的整数秒数。