ChatGPT解决这个技术问题 Extra ChatGPT

在 OS X 上从 zsh 切换到 bash,然后再切换回来?

我正在学习在 Rails 中进行开发,并发现了 zsh 的强大功能。但是,对于我的其他一些任务,我希望使用普通的 bash

尽管它们是相同的,但在某些情况下,我只是对 bash 的布局感到满意。

如何来回切换,或打开和关闭 zsh


l
larsks

您可以使用 exec 将当前的 shell 替换为新的 shell:

切换到 bash

exec bash

切换到 zsh

exec zsh

这不会影响新的终端窗口或任何东西,但它很方便。


别客气!如果您对此答案感到满意,请花点时间通过选中答案左侧的复选标记将其标记为已接受。谢谢!
或者,只需调用 zsh,然后在完成 exit 后返回 bash。执行它似乎是不必要和不可取的。
一切都取决于您在退出时期望终端窗口执行的操作。我自己发现启动子shell 是不必要和不可取的。
你如何更改默认值?此外,当我在 zsh 中执行“exec bash”时,它不会获取我的 bash_profile。
有时我想使用 zsh,有时它会干扰我想做的事情。来回设置默认值是个坏主意,所以这是完美的解决方案!!!荣誉!
P
Penny Liu

您可以尝试 chsh -s /bin/bashbash 设置为默认值,或尝试 chsh -s /bin/zshzsh 设置为默认值。

终端需要重启才能生效。


不完全正确。可以简单地输入命令:“bash”或“zsh”来使用该 shell。
p
phil-ociraptor

我经常在 zsh 和 bash 之间切换。有一段时间,我曾经不得不在每次切换时获取我的 bash_profile。然后我发现你可以(通常)做

exec bash --login

要不就

exec bash -l

谢谢菲尔,我安装了思想机器人/笔记本电脑,它弄乱了我所有的配置。您的提示有助于恢复我的 bash 环境。
你写什么是“--login”会有用吗?
Make bash act as if it had been invoked as a login shell (see INVOCATION below). Source
R
Rahil

如果只是临时开关

您可以使用 exec 如上所述,但更多的是永久解决方案。

您可以使用 chsh -s /bin/bash (切换到 bash)和 chsh -s /bin/zsh (切换到 zsh)


我的现在是 zsh,但是当我尝试 chsh -s /bin/bash 并输入我的密码时,它显示没有进行任何更改
您可能需要注销并登录。或者您可以重新启动 PC 以应用此更改。
P
Pang

对于 Bash,请尝试

chsh -s $(which bash)

对于 zsh,请尝试

chsh -s $(which zsh)

l
ljcusack

zsh 有一个内置命令 emulate,它可以通过设置适当的选项来模拟不同的 shell,尽管 csh 永远不会被完全模拟。

emulate bash
perform commands
emulate -R zsh

-R 标志将所有选项恢复为该 shell 的默认值。

请参阅:zsh manual


不清楚它会模拟哪个版本的 bash,它会模拟 bash 4.x 吗?还是5.x?
R
Randil Tennakoon

在 Mac OS Catalina 中,默认的交互式 shell 是 zsh。要将 shell 从 bash 更改为 zsh:

chsh -s /bin/zsh

然后你需要输入你的 Mac 密码。退出终端并重新打开它。要检查它是否已成功更改为 ssh,请发出以下命令。

echo $SHELL

如果结果是 /bin/zsh,那么你的任务就完成了。

要将其更改回 bash,请在终端上发出以下命令。

chsh -s /bin/bash

使用 echo $SHELL 再次验证它。那么结果应该是/bin/bash。


S
Sarah A

你可以只输入 bash 或者如果你总是想使用 bash:

关于“iTerm2”

转到首选项 > 配置文件 > 命令

从下拉列表中选择“命令”

键入 bash

通过关闭 iTerm 进行测试并再次打开它


k
kushagra deep

请按照以下步骤操作!

   chsh -s /bin/bash
   Restart terminal 
   check which shell is in use by echo $SHELL
   source .profile 

你和 Bash 一起回来了!!


P
Paul Jurczyk

您应该可以在终端中输入 bash 以切换到 bash,然后输入 zsh 以切换到 zsh。至少对我有用。


这甚至更简单。
这确实有效,但每次键入 zshbash 时,您都会进入一个子 shell(当前 shell 下的子进程)。您需要多次键入 exit 才能返回到最顶层的 shell。
R
Rajani

您可以使用命令“bye”轻松切换回 bash


bye 将退出 zsh 但不会返回 bash