Tengo un servidor Debian alojado. Cuando inicio sesión a través de ssh, me saludan con un entorno sh. ¿Cómo lo cambio para comenzar en un entorno bash?
Tengo un servidor Debian alojado. Cuando inicio sesión a través de ssh, me saludan con un entorno sh. ¿Cómo lo cambio para comenzar en un entorno bash?
Respuestas:
Como usuario normal, puede cambiar su shell de inicio de sesión predeterminado utilizando el chshcomando. Aquí hay un ejemplo:
chsh -s /bin/bash
Otra opción es usar usermod como root:
usermod -s /bin/bash username
adduser, debería establecerlo en bash de manera predeterminada. El valor predeterminado está configurado en /etc/adduser.conf. De lo contrario, especifique el shell explícitamente con useradd.
Edita /etc/passwddonde la última entrada es el shell predeterminado. Hacerlo /bin/bash.
Alternativamente, puede alterar alterar el valor predeterminado del sistema de /bin/shno ser bash.
/bin/shser /bin/dash. Y por lo que vale, las otras dos respuestas son idénticas y logran el mismo fin por diferentes medios. Lo que sea.
/etc/passwdestán altamente desaconsejadas. Un error de edición puede interrumpir los inicios de sesión para todos los usuarios, lo que requiere medios de recuperación o un inicio en modo de usuario único para reparar. Existen herramientas como usermodpara cambiar /etc/passwd.
/etc/passwd.
/bin/bashcomo /bin/shes lo mismo que ejecutarla --posix, lo que puede tener resultados no deseados.
/bin/bashcomo mi caparazón todos esos años en todas las máquinas. Necesitas un argumento más concreto.
El shell predeterminado del sistema /bin/shen versiones recientes de Ubuntu está configurado para ser /bin/dash. Simplemente ejecutando el siguiente comando:
sudo dpkg-reconfigure dash
puede volver a cambiarlo al valor predeterminado anterior de /bin/bash.
Con esto, puede lograr el efecto deseado de tener bashun shell interactivo sin cambiar ninguna configuración de usuario (no chsho usermod), y funcionará para todos los usuarios que actualmente tienen configurado el shell /bin/sh.
Solo hay una pequeña desventaja en esto: el tiempo de arranque de Ubuntu puede aumentar ligeramente, ya que dashrequiere menos memoria para cargar y un poco más rápido para ejecutarse (no es de extrañar, tiene características tan limitadas). Pero creo que será bastante difícil medir este efecto, especialmente para el entorno de alojamiento.
Además, a veces es molesto ver scripts de shell que no funcionan correctamente porque usan algunas bashfunciones avanzadas que no son compatibles dash. El uso de esta receta asegurará que esto no suceda.
Para obtener más información, consulte el wiki de Ubuntu sobre este problema .
/bin/shse utiliza como intérprete para los scripts de shell compatibles con POSIX; no es necesariamente el mejor shell interactivo; si desea bashser el shell de su sistema, debe configurar su shell de inicio de sesión preferido utilizando chsho las adduserllamadas adecuadas . usar dpkg-reconfigurees una mala elección si el usuario A quiere zsh y el usuario B quiere bash y ambos insisten en tener / bin / sh como su shell predeterminado.
zshy el usuario B bashlo tendrán. Si userC está configurado para sh, tendrá bash, que es el valor predeterminado actual de Ubuntu para los nuevos usuarios de todos modos
dpkg-reconfigure zshestablecer zshcomo / bin / sh, y luego dpkg-reconfigure dashestablecer dashcomo / bin / sh, que es un punto muerto; Estoy diciendo principalmente que es preferible establecer el shell de inicio de sesión en el shell que se desea usar en lugar de pasar por aros para hacer / bin / sh un buen shell de inicio de sesión.
dpkg-reconfigure dashpuede tener shsentido bash, en lugar de estar lisiado dash. Todos los demás depósitos seguirán intactos.
Para el caso en el que intenta utilizar una cuenta compartida (por cualquier razón) y no puede cambiar el shell predeterminado, puede ejecutar
ssh -t <user@hostname> bash -l
Si necesita mantener su entorno de otro shell, puede ejecutar ese shell primero; por ejemplo
ssh -t <user@hostname> ksh -c bash -l
-lopción?