是否可以切换 shell 而不通过 exit 转储到旧 shell?

是否可以切换 shell 而不通过 exit 转储到旧 shell?

例如,假设我bash, sh, fish, zsh, pwsh安装了或更多。

如果我开始bash,切换到sh会导致以下结果:

user@device:/folder/directory$ sh
$ exit
user@device:/folder/directory$ exit

-- Session actually ends.

我希望能够做到这一点:

user@device:/folder/directory$ switchto fish
user@device /f/directory> switchto zsh
device% exit

-- Session actually ends.

有没有类似的东西不是关闭终端?例如,一个超级shell(可能是shmgr),它被用作默认shell,并提供这样的命令(可能是switchsh)。

答案1

您可以使用exec命令将一个交互式 shell 替换为另一个。例如man bash(其中exec作为 shell 内置命令提供)

   exec [-cl] [-a name] [command [arguments]]
          If command is specified, it replaces the shell.  No new  process
          is  created.

之后会发生什么取决于:如果原始 shell 是登录 shell,则会话将终止。例如,如果 shell 是在终端仿真器中运行的交互式 shell,则终端仿真器应用程序将决定要做什么:您可以在->菜单gnome-terminal下选择关闭终端、不关闭终端(使其毫无用处 - 没有 shell)或重新启动默认 shell。EditPreferences

相关内容