如何“禁用”oh-my-zsh(和 zsh)而不卸载它?

如何“禁用”oh-my-zsh(和 zsh)而不卸载它?

我正在尝试新的开发环境,包括 zsh 和 oh-my-zsh。现在我已经安装了 oh-my-zsh,它在我的终端(iTerm2 和终端)上默认启动,始终以 zsh 启动,并且设置从 oh-my-zsh 开始。我想知道是否可以“禁用”或停止使用 zsh 及其与 oh-my-zsh 的设置,而无需卸载 oh-my-zsh?如果知道如何重新打开它们也很好。

目前,我的终端自动进入 zsh(我认为)并自动使用 oh-my-zsh。我希望对此有更多的控制,并且当使用 zsh 和使用 oh-my-zsh 功能时我能够控制两者。

我还想知道的一件事是,终端应用程序如何知道在启动时开始运行哪个 shell。如果能够控制的话那就太好了!

如果您尽可能多地解释您给我的每个命令的“原因”,那将会很有用! :)


我使用的是 OS X。不确定这是否重要,但我倾向于更喜欢更适用于更通用的 Unix 环境而不是我自己的答案。

答案1

你的问题的措辞不明确,所以我无法判断你的意思是你想停止使用zsh还是你想停止使用oh-my-zsh。我将涵盖两者。

禁用zsh

只需运行chsh并选择您之前使用的 shell 即可。如果您不知道以前使用的是什么 shell,那么几乎可以肯定bash。此命令更改与您的用户关联的“登录 shell”。本质上,它改变了你的默认 shell。

您需要打开一个新的终端窗口才能使更改生效。如果这不起作用,您将需要注销并重新登录以重新初始化您的环境。

仅禁用oh-my-zsh

  1. 检查是否~/.zshrc.pre-oh-my-zsh存在。可能确实如此。 (当安装脚本移走oh-my-zsh之前的文件时,就会创建此文件。是 的启动文件,类似于的启动文件。).zshrc.zshrczsh.bashrcbash
  2. 如果确实如此,请执行mv ~/.zshrc ~/.zshrc.oh-my-zsh.这会将oh-my-zsh创建的内容排除.zshrc在外,因此我们可以通过执行 来恢复原始内容mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
  3. 如果不存在,请~/.zshrc在文本编辑器中打开。找到该行source $ZSH/.oh-my-zsh,然后将其注释掉或将其删除。这将禁用 的初始化oh-my-zsh

您需要重新启动 shell 才能使更改生效。

答案2

chsh -s /bin/bash

要手动设置新的默认 shell,请执行 chsh -s /my/ new/shell,例如 chsh -s /bin/bash。然后重新打开你的 shell 即可。

答案3

因为它有点隐藏在 @Gilles 答案中,无需任何配置即可加载 zsh 的快速方法,例如 .zshrc .zshenv 等

zsh -f

当您想要测试配置中的任何内容是否阻止 zsh 的某些功能运行时,这非常有用。

答案4

您可以通过设置环境变量来告诉 zsh 从不同的目录加载其每用户配置文件ZDOTDIR在启动 zsh 之前。

如果您想在不加载配置文件的情况下启动 zsh,请设置ZDOTDIR为不存在的目录。如果您想跳过系统配置文件(除了/etc/zshenv),您可以运行zsh -f.如果您想跳过系统配置文件但运行每用户文件,请运行zsh -d.

例如,如果您想测试驱动 oh-my-zsh 而不将其设置为默认值,请不要将.zshrcoh-my-zsh 中的文件放在您的主目录中。相反,将其放在其他地方,例如。中~/.oh-my-zsh,然后ZDOTDIR=~/.oh-my-zsh zsh当你想使用 oh-my-zsh 时运行。


终端应用程序运行环境变量指定的 shell SHELL。如果未设置此变量,它们将运行用户数据库 ( /etc/passwd) 中指定的登录 shell。启动终端仿真器时,您可以请求不同的应用程序,例如xterm -e fish

相关内容