Cambiar de usuario en la terminal

Cambiar de usuario en la terminal

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/skeles:

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 useraddse comporte así useradd -m, pero en mi opinión es mejor aprender a usar -msiempre para evitar verse afectado por diferentes instalaciones y distribuciones.

Según los comentarios anteriores, es posible establecer los valores predeterminados usando -Del 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 echoarriba.

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.

información relacionada