Apakah mungkin untuk mengganti shell tanpa dibuang ke shell lama dengan keluar?

1

Sebagai contoh, katakanlah saya telah bash, sh, fish, zsh, pwshmenginstal atau lebih.

Jika saya mulai bash, beralih ke sharahan sebagai berikut:

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

-- Session actually ends.

Yang saya inginkan adalah dapat melakukan ini:

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

-- Session actually ends.

Apakah ada sesuatu yang tidak menutup terminal? Misalnya, super-shell (mungkin shmgr) yang digunakan sebagai shell default dan menyediakan perintah seperti itu (mungkin switchsh).

schuelermine
sumber

Jawaban:

3

Anda dapat menggunakan execperintah untuk mengganti satu shell interaktif dengan yang lain. Dari man bashmisalnya (di mana execdisediakan sebagai perintah shell builtin)

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

Apa yang terjadi setelah itu tergantung: jika shell asli adalah shell login, maka sesi akan berakhir. Jika shell adalah shell interaktif yang berjalan di terminal emulator misalnya, maka aplikasi terminal emulator memutuskan apa yang harus dilakukan: untuk gnome-terminalAnda memiliki pilihan di bawah Edit-> Preferencesmenu antara menutup terminal, tidak menutup terminal (meninggalkannya agak tidak berguna - tanpa shell) atau meluncurkan kembali shell default.

Steeldriver
sumber
Ini sudah pasti benar (walaupun execlebih kuat daripada yang bisa diasumsikan pembaca dari ini: execshell tidak perlu interaktif dan perintah eksternal itu execbahkan tidak perlu shell). Ini bekerja dari kerang Bourne-style serta tcshdan fish. Tapi saya ingin tahu apakah pwsh(PowerShell), yang disebutkan dalam pertanyaan, memiliki execperintah atau yang setara. Ini berjalan pada sistem * nix tetapi sebenarnya bukan shell bergaya Unix. (Di Windows, sepertinya tidak, meskipun saya mungkin kehilangan sesuatu. Di Ubuntu saya telah menginstal snap tetapi saya tidak berhasil membuatnya berjalan, jadi saya belum diuji dalam hal itu.)
Eliah Kagan
@EliahKagan ya saya tidak bermaksud mengatakan bahwa itu tidak dapat digunakan untuk menggantikan proses lain, hanya saja itu dapat digunakan untuk mengganti shell interaktif;)
steeldriver