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 chsh
comando. 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/passwd
donde la última entrada es el shell predeterminado. Hacerlo /bin/bash
.
Alternativamente, puede alterar alterar el valor predeterminado del sistema de /bin/sh
no ser bash.
/bin/sh
ser /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/passwd
está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 usermod
para cambiar /etc/passwd
.
/etc/passwd
.
/bin/bash
como /bin/sh
es lo mismo que ejecutarla --posix
, lo que puede tener resultados no deseados.
/bin/bash
como mi caparazón todos esos años en todas las máquinas. Necesitas un argumento más concreto.
El shell predeterminado del sistema /bin/sh
en 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 bash
un shell interactivo sin cambiar ninguna configuración de usuario (no chsh
o 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 dash
requiere 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 bash
funciones 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/sh
se utiliza como intérprete para los scripts de shell compatibles con POSIX; no es necesariamente el mejor shell interactivo; si desea bash
ser el shell de su sistema, debe configurar su shell de inicio de sesión preferido utilizando chsh
o las adduser
llamadas adecuadas . usar dpkg-reconfigure
es 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.
zsh
y el usuario B bash
lo 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 zsh
establecer zsh
como / bin / sh, y luego dpkg-reconfigure dash
establecer dash
como / 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 dash
puede tener sh
sentido 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
-l
opción?