Возможно ли переключение оболочек без выхода в старую оболочку при выходе?

Например, допустим, у меня установлено 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.

Есть ли что-то в этом роде, что не закрывает терминал? Например, супер-оболочка (может быть shmgr), которая используется в качестве оболочки по умолчанию и предоставляет такую ​​команду (возможно, switchsh).

1
задан 28 August 2019 в 22:42

1 ответ

Можно использовать exec управляйте для замены одной интерактивной оболочки другим. От man bash например (где exec обеспечивается как оболочка встроенная команда),

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

Что происходит, после этого зависит: если исходная оболочка была оболочкой входа в систему, то сессия завершится. Если оболочка является интерактивной оболочкой, работающей в эмуляторе терминала, например, то приложение эмулятора терминала решает, что сделать: для gnome-terminal у Вас есть выбор под Edit -> Preferences меню между закрытием терминала, не закрытием терминала (отъезд его довольно бесполезный - без оболочки) или перезапуск оболочки по умолчанию.

3
ответ дан 3 December 2019 в 07:20

Другие вопросы по тегам:

Похожие вопросы: