cambio de shell de zsh a bash


17

Mi servidor web fue manipulado por alguien que estaba usando zsh shell. Me siento más cómodo usando bash shell, ya que esos son los valores predeterminados que vienen con Ubuntu y OS X (los dos sistemas operativos principales que uso). Pero esta pregunta se centra en el servidor Ubuntu. Tengo 4 sitios web ejecutándose en este servidor web, uso byobu, uso tmux, uso ruby ​​/ ruby ​​on rails, node.js, apache, algunos demonios. Si cambio el shell raíz actual de zsh a bash, ¿podría haber algún efecto secundario negativo que pueda resultar de este cambio? Por ejemplo, ¿se eliminarán los procesos porque su proceso principal (el shell) se ha cambiado?


¿Estás preguntando sobre las consecuencias del cambio (que no son ninguno, estoy usando zsh en este momento y puedo cambiar a bash cuando lo desee) o estás preguntando cómo cambiar efectivamente el shell?
Braiam

@Braiam Estoy nervioso por las consecuencias del cambio. Si no hay consecuencias, entonces cambiaré. Solo estaba pensando que el shell era un proceso padre para algunos de estos demonios como apache, y si tuviera que cambiarlo, mataría el proceso de apache. Pero supongo que estoy equivocado.
JohnMerlino

Respuestas:


10

Al cambiar su shell, via sudo chsh --shell=/bin/bash $USERcambiará el campo de shell en /etc/passwd. Este valor solo se consulta en el momento de inicio de sesión, cuando el sistema no tiene idea de qué shell usar para usted.

Los procesos en ejecución, ya sean iniciadas por zsh, bash apacheo evil_overlord's_programno se verá afectado


¿No es el shell el proceso padre de otros procesos que se ejecutan en él, o solo el terminal de control (y no el shell) se consideraría el proceso padre?
JohnMerlino

El loginprograma se ejecuta en un proceso, como todo. Cuando te deja entrar, crea otro proceso con tu UID, etc., y ejecuta / bin / bash (desde / etc / passwd). El shell bash lee desde STDIN (configurado por login) y bifurcará / ejecutará comandos no incorporados, esperará a que terminen y realizará un bucle para obtener más comandos. La idea de "terminal de control" no es útil en Unix / Linux.
waltinator

25

Respuesta del desbordamiento de pila ( cambio de zsh a bash ):

Puede usar exec para reemplazar su shell actual con un nuevo shell:

Cambiar a bash:

exec bash

Cambiar a zsh:

exec zsh

Esto no afectará a las nuevas ventanas de terminal ni nada, pero es conveniente.


no funcionó. still: echo $ SHELL / usr / bin / zsh
ses

8

Abra su terminal y use el siguiente comando:

chsh -s $(which bash)

Supongo que este es el equivalente de chsh -s / bin / bash
JohnMerlino

2
which bashdaría la ruta absoluta de bash, por lo que sería lo mismo si /bin/bashes donde bashse encuentra.
ryanjdillon

0

En Mac OS Catalina

  1. Cambiar a zsh:

    chsh -s /bin/zsh
  2. Cambiar a bash:

    chsh -s /bin/bash
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.