终端提示从 XXXs-MBP 更改为 XXXs-Macbook-Pro

终端提示从 XXXs-MBP 更改为 XXXs-Macbook-Pro

我正在使用 Catalina(默认 shell 是 zsh),我想弄清楚执行后会发生什么zsh。我以为它会告诉你“你正在使用 zsh”或类似的东西。相反,它向我展示了这

我试图找出.zshrc或中的当前提示定义.zprofile,但我唯一发现的是 bash_profile,这让我完全困惑。

我的意思是这也不是我在第一张图片中切换到 Bash 时的提示格式。这个定义有什么用?它真的让我抓狂。

我想知道执行后会发生什么zsh,以及为什么会导致提示改变。我知道要进一步自定义提示,我可能需要创建一个.zshrc.zprofile文件。但我真的很好奇默认提示格式在哪里定义。我怎样才能简单地恢复它而不添加新文件(覆盖默认文件)?

答案1

macOS 上 zsh 的默认提示符在 中/etc/zshrc。它看起来像这样,位于第 69-70 行:

# Default prompt
PS1="%n@%m %1~ %# "

如果您想更改此提示,甚至添加“您现在正在使用 zsh”之类的消息,您应该在用户设置中通过.zshrc在您的主目录中创建(或~/.zshrc简称)来覆盖它。

不要担心创建额外的文件 - 您应该继续这样做,因为如果 Apple 决定在未来版本的 macOS 中更改默认设置,您的更改/etc/zshrc将被操作系统升级覆盖。

现在,要回答标题中的问题,我不确定为什么在重新启动 shell 时机器名称会发生​​变化,但这与 macOS 如何在网络上查找计算机的名称有关。

这个答案这个答案在 Apple StackExchange 上,详细介绍了 macOS 使用 DHCP 和反向 DNS 查找来尝试确定您的计算机名称的各种方式,即使您已在共享偏好设置中设置了它。

必须有两个不同的地方,例如您的共享设置和 wifi 路由器配置,为您的计算机配置了略有不同的名称。当您启动 zsh 的新副本时,其中一个或另一个优先,并且名称会翻转。

要解决此问题,我首先要确保您已在共享设置中设置了计算机的名称。如果这仍然不起作用,您可以覆盖HostName计算机上的设置,该设置应始终优先:

% sudo scutil --set HostName "Yichis-MacBook-Pro"

答案2

不完全理解事情是如何运作的。但这是我的理解:

输入 后zsh,终端会创建一个由 触发的新进程zsh。执行 时也会发生同样的事情。如果您现在在执行和bash后尝试关闭当前终端窗口,它会警告“您正在尝试终止正在运行的进程 zsh(2) 和 bash”。这就是每种进程的确切数量。zshbash

只需输入exit即可退出当前进程。 一直按exit直到所有额外进程都消失,然后就会出现熟悉的提示。

相关内容