¿Cómo comienzo en bash cuando ssh'ing en mi servidor?
29
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?
usermod funcionó de maravilla. ¿Hay alguna forma de configurarlo como predeterminado para bash cuando agrego un nuevo usuario, o tengo que ejecutar el comando cada vez?
Si lo usa 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.
jordanm
5
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.
Oye, ¿qué pasa con el voto negativo de conducir? Por ejemplo, Ubuntu tiene por defecto /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.
Dirk Eddelbuettel
44
Las ediciones manuales de /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.
jordanm
1
Disparates. Ejecutando Linux desde el '94 aquí. Nunca reventado /etc/passwd.
Dirk Eddelbuettel
2
Es bueno saber que has sido muy cuidadoso. No todos lo han hecho. Otra nota sobre su actualización, que se inicia /bin/bashcomo /bin/shes lo mismo que ejecutarla --posix, lo que puede tener resultados no deseados.
jordanm
Mira, he sido desarrollador / mantenedor de Debian desde 1995 también. Solíamos tener bash por defecto, cambiamos a shells más simples por una variedad de razones. He estado usando /bin/bashcomo mi caparazón todos esos años en todas las máquinas. Necesitas un argumento más concreto.
Dirk Eddelbuettel
2
Debe editar su perfil de usuario, puede hacerlo directamente editando el /etc/passwdarchivo o puede usar el usermodcomando para hacerlo por usted. La sintaxis que está buscando se ve más o menos así:
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 .
debe mantener separados los casos de uso: /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.
umläute
si el usuario A está configurado explícitamente 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
mvp
claro, pero su solución sugirió algo como 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.
umläute
Solo dije que eso dpkg-reconfigure dashpuede tener shsentido bash, en lugar de estar lisiado dash. Todos los demás depósitos seguirán intactos.
mvp
1
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
Respuestas:
Como usuario normal, puede cambiar su shell de inicio de sesión predeterminado utilizando el
chsh
comando. Aquí hay un ejemplo:Otra opción es usar usermod como root:
fuente
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 conuseradd
.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.fuente
/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 comousermod
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.Debe editar su perfil de usuario, puede hacerlo directamente editando el
/etc/passwd
archivo o puede usar elusermod
comando para hacerlo por usted. La sintaxis que está buscando se ve más o menos así:fuente
El shell predeterminado del sistema
/bin/sh
en versiones recientes de Ubuntu está configurado para ser/bin/dash
. Simplemente ejecutando el siguiente comando: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 (nochsh
ousermod
), 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 compatiblesdash
. El uso de esta receta asegurará que esto no suceda.Para obtener más información, consulte el wiki de Ubuntu sobre este problema .
fuente
/bin/sh
se utiliza como intérprete para los scripts de shell compatibles con POSIX; no es necesariamente el mejor shell interactivo; si deseabash
ser el shell de su sistema, debe configurar su shell de inicio de sesión preferido utilizandochsh
o lasadduser
llamadas adecuadas . usardpkg-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 Bbash
lo tendrán. Si userC está configurado parash
, tendrábash
, que es el valor predeterminado actual de Ubuntu para los nuevos usuarios de todos modosdpkg-reconfigure zsh
establecerzsh
como / bin / sh, y luegodpkg-reconfigure dash
establecerdash
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 tenersh
sentidobash
, en lugar de estar lisiadodash
. 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
Si necesita mantener su entorno de otro shell, puede ejecutar ese shell primero; por ejemplo
fuente
-l
opción?Ninguno de los dos
chsh
ousermod
estaban trabajando para mí, pero he encontrado que puede hacerlo a través de la masilla.Ve a
Connection > SSH
y configura elRemote command
abash
.Tenga en cuenta que no podrá acceder
exit
a su shell predeterminado, solo cerrará la conexión.fuente