在OSX上从zsh切换到bash,然后再次返回?


193

因此,Im学习在Rails中进行开发,并发现了zsh的强大功能。但是,对于其他一些任务,我希望使用普通的Bash。尽管它们是相同的,但在某些情况下,我对bash的布局感到满意。如何来回切换,或打开和关闭zsh?谢谢!

Answers:


379

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

切换到bash

exec bash

切换到zsh

exec zsh

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


1
别客气!如果您对此答案感到满意,请花一些时间通过选中答案左侧的对勾标记将其标记为已接受。谢谢!
larsks 2012年

1
或者,只需调用zsh,然后在完成exit后返回bash。执行似乎是不必要的和不希望的。
克里斯·佩奇

一切都取决于您希望退出时终端窗口的功能。我自己发现启动子shell既不必要又不受欢迎。
larsk 2012年

2
如何更改默认值?另外,当我在zsh中执行“ exec bash”时,它不会提供我的bash_profile。
kalehv 2014年

1
有时候我想使用zsh,而有时它会干扰我想做的事情。来回设置默认值是一个坏主意,因此这是完美的解决方案!!!赞!
Bob Roberts

126

您可以尝试chsh -s /bin/bash将bash设置为默认值,或chsh -s /bin/zsh将zsh设置为默认值。


54

我经常在zsh和bash之间切换。有一阵子,我以前每次切换都必须获取bash_profile。然后我发现您可以(通常)做

exec bash --login

要不就

exec bash -l

1
谢谢phill,我安装了thinkbot / laptop,它弄乱了我的所有配置。您的提示有助于恢复我的bash环境。
塞拉尔托2015年

1
您撰写“ --login”的用处会有用吗?
Ewoks

Make bash act as if it had been invoked as a login shell (see INVOCATION below). 来源
Lony

16

如果只是一个临时开关

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

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


12

对于Bash,请尝试

chsh -s $(which bash)

对于zsh,请尝试

chsh -s $(which zsh)

6

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

emulate bash
perform commands
emulate -R zsh

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

请参阅:zsh手册


1
虽然尚不清楚它将模拟什么版本的bash,但会模拟bash 4.x吗?还是5.x?
Edgar Aroutiounian

2

您应该只需要键入bash终端以切换到bash,然后键入zsh以切换到zsh。至少对我有用。


这甚至更简单。
andromeda

2
这确实有效,但是每次您键入zshbash进入子Shell(当前Shell下的子进程)时,都可以。您将需要多次键入exit才能返回到最顶层的shell。
RichVel19

0

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

chsh -s /bin/zsh

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

echo $SHELL

如果结果为/ bin / zsh,则说明您的任务已完成。

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

chsh -s /bin/bash

使用再次验证echo $SHELL。然后结果应该是/ bin / bash。


0

您可以输入,bash或者如果您始终想使用bash:

在“ iTerm2”上

  • 转到首选项>配置文件>命令
  • 从下拉菜单中选择“命令”
  • 类型 bash

通过关闭iTerm进行测试,然后再次打开


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.