mengganti shell dari zsh ke bash

16

Server web saya dirusak oleh seseorang yang menggunakan shell zsh. Saya merasa lebih nyaman menggunakan bash shell, karena itulah default yang datang dengan Ubuntu dan OS X (dua sistem operasi utama yang saya gunakan). Tetapi pertanyaan ini difokuskan pada server Ubuntu. Saya memiliki 4 situs web yang berjalan di server web ini, saya menggunakan byobu, saya menggunakan tmux, saya menggunakan ruby ​​/ ruby ​​pada rails, node.js, apache, beberapa daemon. Jika saya mengganti shell root saat ini dari zsh ke bash, mungkinkah ada efek samping negatif yang mungkin dihasilkan dari switch ini? Misalnya, apakah proses akan dibunuh karena proses induknya (shell) telah diaktifkan?

JohnMerlino
sumber
Apakah Anda bertanya tentang konsekuensi dari perubahan (yang tidak ada, saya menggunakan zsh sekarang dan dapat beralih ke bash kapan pun saya mau) atau apakah Anda bertanya tentang cara mengganti shell secara efektif?
Braiam
@Braiam Saya gugup tentang konsekuensi dari perubahan. Jika tidak ada konsekuensi, maka saya akan berubah. Saya hanya berpikir bahwa shell adalah proses induk dari beberapa daemon ini seperti apache, dan jika saya beralih dari itu, itu akan membunuh proses apache. Tapi saya kira saya salah.
JohnMerlino

Jawaban:

10

Mengubah shell Anda, via sudo chsh --shell=/bin/bash $USERakan mengubah bidang shell di /etc/passwd. Nilai ini hanya dikonsultasikan pada waktu login, ketika sistem tidak tahu shell mana yang digunakan untuk Anda.

Menjalankan proses, apakah dimulai oleh zsh, bash apacheatau evil_overlord's_programtidak akan terpengaruh

waltinator
sumber
Bukankah shell proses induk dari proses lain yang berjalan di dalamnya, atau hanya terminal pengontrol (dan bukan shell) yang akan dianggap sebagai proses induk?
JohnMerlino
The loginProgram berjalan dalam proses, seperti segala sesuatu. Ketika memungkinkan Anda masuk, ia menciptakan proses lain dengan UID Anda, dll, dan menjalankan / bin / bash (dari / etc / passwd). Bash shell membaca dari STDIN (diatur oleh login), dan akan melakukan fork / exec perintah non-builtin, menunggu mereka untuk mengakhiri, dan loop untuk perintah lainnya. Gagasan "mengendalikan terminal" tidak berguna di Unix / Linux.
waltinator
26

Jawaban dari Stack Overflow ( beralih dari zsh ke bash ):

Anda bisa menggunakan exec untuk mengganti shell Anda saat ini dengan shell baru:

Beralih ke bash:

exec bash

Beralih ke zsh:

exec zsh

Ini tidak akan memengaruhi jendela terminal baru atau apa pun, tetapi lebih mudah.

Menukar
sumber
tidak bekerja. masih: echo $ SHELL / usr / bin / zsh
ses
8

Buka terminal Anda dan gunakan perintah berikut:

chsh -s $(which bash)
rɑːdʒɑ
sumber
Saya berasumsi ini setara dengan chsh -s / bin / bash
JohnMerlino
2
which bashakan memberikan jalur absolut bash, jadi akan sama jika di /bin/bashmana bashletaknya.
ryanjdillon
0

Di Mac OS Catalina

  1. Ubah ke zsh:

    chsh -s /bin/zsh
  2. Ubah ke bash:

    chsh -s /bin/bash
Mono
sumber