如何确定我的 ~/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 调用以来的整数秒数。
我有一个 ~/.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 调用以来的整数秒数。