¿Hay alguna diferencia práctica entre cambiar el shell de un usuario por chsh versus editar .bashrc?

1

Siempre he configurado mi shell usando chsho sudo vim /etc/passwd. Hace poco hablé con alguien que en vez establece su concha añadiendo lo siguiente a ~/.bashrc(o presumiblemente el archivo rc de lo que el shell por defecto en la máquina es): SHELL=/bin/zsh exec /bin/zsh --login.

¿Existe una diferencia práctica entre estos dos enfoques?

Jones
fuente

Respuestas:

6

El último método no cambia su shell, solo le dice al antiguo shell que ejecute uno nuevo.

Además de ser casi el doble de lento (ya que todavía comienzas bash cada vez), puede provocar algunas interacciones inesperadas:

  • En algunos sistemas, los comandos por lotes como ssh myhost "ps -ef"fuente ~ / .bashrc antes de ejecutar el comando, pero su línea "exec zsh" olvidó dar cuenta de eso y ejecuta un shell interactivo sin importar qué. Si eso sucede, se rompe todo el uso por lotes de SSH (incluido SFTP).

  • En otros sistemas, dichos comandos por lotes no generan ~ / .bashrc (o, con frecuencia, lo hacen, pero ~ / .bashrc regresa antes si se ejecuta en modo por lotes), por lo que nunca se alcanza su "exec zsh". Por lo tanto, el intento de su amigo de cambiar el caparazón es menos efectivo.

  • Si olvida este cambio e intenta editar ~ / .zshrc para hacer lo contrario (es decir, ejecutar bash), obtendrá un bucle sin fin.

Gravedad
fuente