有没有办法详细打印在 OS X 中打开终端时执行的所有内容?
有时终端需要长达 10 秒钟才能准备好进行交互,我想知道导致这种情况的原因是什么。
最有可能的是,它是我的某个点文件中的问题,或者如某人所说,它可能是与 DNS 相关的问题,但无论如何,我想知道这种随机缓慢的原因并修复它。
有什么建议么?
答案1
假设您正在使用bash
,请输入
set -x
在所有 shell 启动文件中。此 shell 选项打印执行的每个命令(扩展后)。
答案2
如果你想检查你的 shell 获取点文件所需的时间,你可以直接time
执行它们。
time . ~/.bash_profile
重复上述步骤.profile
(如果您使用它代替.bash_profile
),.bashrc
(如果您从.bash_profile
* 获取此信息),等等。否则,我认为任何系统配置文件都不应该对此负责。
我个人发现bash_completion
这需要相当长的时间 (~300ms) – 就我而言,这部分消耗了我获取源的大部分时间.bash_profile
。
*.bashrc
不会自动为 OS X 中的新终端会话提供,因此您必须手动指定它。
答案3
我知道这是一个老问题,但我在 m1 macbook air 中也遇到了同样的问题。问题是 .zprofile 中有超过一千行以下内容:
...
eval "$(/opt/homebrew/bin/brew shellenv)"
eval "$(/opt/homebrew/bin/brew shellenv)"
eval "$(/opt/homebrew/bin/brew shellenv)"
...
我最终在文件开头只保留了这一点:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/edilson/.zprofileeval "$(/opt/homebrew/bin/brew shellenv)"
10 秒到几毫秒 =)