kabuğu zsh'tan bash'a değiştirme


17

Web sunucum zsh kabuk kullanan biri tarafından kurcalandı. Ubuntu ve OS X (kullandığım iki ana işletim sistemi) ile gelen varsayılanlar olduğu için bash kabuğunu kullanırken daha rahat hissediyorum. Ancak bu sorular Ubuntu sunucusuna odaklanmıştır. Bu web sunucusunda çalışan 4 web sitem var, byobu kullanıyorum, tmux kullanıyorum, raylarda yakut / yakut kullanıyorum, node.js, apache, birkaç cin. Geçerli kök kabuğunu zsh'den bash'a değiştirirsem, bu anahtardan kaynaklanabilecek olumsuz yan etkiler olabilir mi? Örneğin, ana süreçleri (kabuk) değiştirildiği için süreçler öldürülecek mi?


Değişimin sonuçlarını mı soruyorsunuz (ki şu anda zsh kullanıyorum ve istediğimde bash'a geçebilirim) veya kabuğun nasıl etkili bir şekilde değiştirileceğini mi soruyorsunuz?
Braiam

@ Braiam Değişimin sonuçları konusunda endişeliyim. Sonuç yoksa, ben değişeceğim. Ben sadece kabuğun apache gibi bu cinlerden bazıları için ana bir süreç olduğunu düşünüyordum ve eğer onu değiştirirsem apache sürecini öldürecekti. Ama sanırım yanılıyorum.
JohnMerlino

Yanıtlar:


10

Kabuğunuzu değiştirmek, üzerinden sudo chsh --shell=/bin/bash $USERkabuk alanını değiştirir /etc/passwd. Bu değer, yalnızca sistemde hangi kabuğun sizin için kullanılacağı hakkında hiçbir fikir bulunmadığında oturum açma sırasında dikkate alınır.

Tarafından başlatılmış olup olmadığını Koşu süreçleri, zsh, bash apacheveya evil_overlord's_programetkilenmeyecektir


Kabuk, içinde çalışan diğer işlemlerin ana işlemi değil mi, yoksa yalnızca kontrol terminali (ve kabuk değil) ana işlem olarak kabul edilir mi?
JohnMerlino

loginProgram her şey gibi, bir işlemde çalışır. Size izin verdiğinde, UID, vb. İle başka bir işlem oluşturur ve / bin / bash (/ etc / passwd'den) çalıştırır. Bash kabuğu STDIN'den (tarafından ayarlanır login) okunur ve yerleşik olmayan komutları çatalla / yürütür, sonlandırılmasını bekler ve daha fazla komut için döngü yapar. "Terminali kontrol etme" fikri Unix / Linux için kullanışlı değildir.
vals

26

Yığın Taşmasından gelen cevap ( zsh'tan bash'a geçiş ):

Yürütme kabuğunuzu yerine yeni bir kabuk koymak için exec komutunu kullanabilirsiniz:

Bash'a geç:

exec bash

Zsh'ye geç:

exec zsh

Bu, yeni terminal pencerelerini veya herhangi bir şeyi etkilemez, ancak uygundur.


işe yaramadı. hala: echo $ SHELL / usr / bin / zsh
ses

8

Terminalinizi açın ve aşağıdaki komutu kullanın:

chsh -s $(which bash)

Bunun chsh -s / bin / bash eşdeğeri olduğunu varsayıyorum
JohnMerlino

2
which bashmutlak yolunu bashverirdi, yani eğer /bin/bashbulunduğu bashyer de aynıydı .
ryanjdillon

0

Mac OS Catalina'ta

  1. Zsh olarak değiştir:

    chsh -s /bin/zsh
  2. Bash olarak değiştir:

    chsh -s /bin/bash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.