
Estoy cambiando de usuario usando el comando:
sudo su - userName
En mi terminal siempre tengo:
user@user directory $ (some command)
Pero cuando cambio de usuario solo tengo:
$ (some commands)
Es difícil explicar lo que quiero decir, pero soy nuevo en Linux y no encontré esto en otras preguntas. ¿Cómo mantener todos estos datos antes del signo $ después de volver a iniciar sesión?
Editar: Ok, funcionó para mí. Recreé el usuario usando el comando: agregar nombre de usuario
Pero tengo otra pregunta. Este comando crea el directorio /home pero está vacío. ¿Hay algún comando para inicializar /home para un nuevo usuario?
Respuesta1
Pero tengo otra pregunta. Este comando crea el directorio /home pero está vacío. ¿Hay algún comando para inicializar /home para un nuevo usuario?
La solución a la segunda pregunta resolverá también la primera. Su nuevo usuario no tiene todos los archivos de configuración predeterminados en su directorio de inicio y, por lo tanto, el nuevo shell no muestra un mensaje sofisticado, etc.
El comando estándar para crear un nuevo usuario.yinicialice su directorio de inicio usando el contenido de /etc/skel
es:
useradd -m
Y como se ha dicho, algunas distribuciones tienen valores predeterminados incorrectos, por lo que es posible que desees agregar más opciones:
useradd -m -s /bin/bash
Para más detalles, utilice:
man useradd
Existen algunas herramientas sofisticadas de nivel superior específicas para distribuciones. Un ejemplo, utilizado en Debian y similares, ya se mencionó en los comentarios a su pregunta:
adduser
Además, hay una configuración en /etc que puede hacer que useradd
se comporte así useradd -m
, pero en mi opinión es mejor aprender a usar -m
siempre para evitar verse afectado por diferentes instalaciones y distribuciones.
Según los comentarios anteriores, es posible establecer los valores predeterminados usando -D
el argumento para useradd
:
useradd -D -s /path/to/default/shell
Respuesta2
Estás cambiando a un usuario normal y este usuario no tiene $PS1 configurado, pero en mi opinión agregas este usuario usando el comando useradd en Debian. Basado en que, de forma predeterminada, el shell cuando usas useradd es sh, así que puedes intentar:
chsh -s /bin/bash userName
este comando cambiará el shell de nombre de usuario a /bin/bash. y luego intente nuevamente cambiar para ese usuario. Si desea cambiar el shell predeterminado para un bash cuando agrega algún usuario usando useradd, puede cambiar el archivo /etc/default/useradd.
sed -i -e "s@\(^SHELL\).*@\1=/bin/bash@g" /etc/default/useradd
Respuesta3
Estás cambiando de un usuario normal (tú) a otro usuario normal, por ejemplo Joe, ¿verdad?
El siguiente es el indicador de shell, definido en la variable de entorno PS1:
user@user directory $
Después de cambiar a Joe, verá el indicador de shell de Joe. Y no lo configuró para mostrar nada sofisticado en el mensaje, por lo que solo se muestra el mensaje predeterminado, que se parece a:
$
El segundo es el valor predeterminado del programa shell simple, el suyo probablemente sea el valor predeterminado de la distribución de Linux.
Intente configurar PS1 igual que en su cuenta, debería ayudar:
user@usersBox directory $
eco "$PS1"
y después
$
PS1="......"
joe@usersBox directory $
Reemplace el ...... con el valor que se muestra echo
arriba.
La palabra después de "@" normalmente es el nombre de la computadora, así que supongo que le diste a la computadora el mismo nombre que tu nombre de usuario durante la instalación.
Para que el ejemplo sea menos confuso, cambié el nombre de la computadora a "usersBox".
Quizás eliminó la variante que tienes intencionalmente. Pero lo más probable es que sea causado por algún problema técnico menor aleatorio, y estaría bien si también lo cambias por él, en sus archivos de inicio, como ~/.bashrc o similar, dependiendo del tipo de shell utilizado por él.