el comando su no establece el valor BASH_VERSION y no carga el perfil

el comando su no establece el valor BASH_VERSION y no carga el perfil

Tengo una versión de servidor Ubuntu 20.04 LTS y tengo un problema extraño al crear un nuevo usuario y usarlo en el shell desde una conexión ssh. Los pasos para reproducirlo:

  1. Utilice la cuenta raíz para crear un nuevo usuario usando useradd --create-home test.
  2. Inicie sesión como usuario root para probar usando su test.

El resultado:

root@server:~# useradd --create-home test;
root@server:~# echo $BASH_VERSION
5.0.17(1)-release
root@server:~# su test;
$ echo $BASH_VERSION
$

El mensaje no está configurado, las variables de entorno no están cargadas, el autocompletado no funciona, los alias no funcionan, es como si el archivo .profile y .bashrc no existieran pero sí existen y tienen sus permisos configurados correctamente:

root@server:/home/test# md5sum /etc/skel/.profile ./.profile 
f4e81ade7d6f9fb342541152d08e7a97  /etc/skel/.profile
f4e81ade7d6f9fb342541152d08e7a97  ./.profile
root@server:/home/test# md5sum /etc/skel/.bashrc ./.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6  /etc/skel/.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6  ./.bashrc
root@server:/home/test# ls -lah
total 24K
drwxr-xr-x  3 test test 4.0K Sep 18 13:18 .
drwxr-xr-x  9 root root 4.0K Sep 18 13:17 ..
-rw-r--r--  1 test test  220 Feb 25  2020 .bash_logout
-rw-r--r--  1 test test 3.7K Feb 25  2020 .bashrc
-rw-r--r--  1 test test  807 Feb 25  2020 .profile

¿Por qué el perfil no se carga cuando inicio sesión como usuario de prueba?

Respuesta1

suComo dice la documentación de :

Para compatibilidad con versiones anteriores, suel valor predeterminado no cambia el directorio actual y solo establece las variables de entorno HOME y SHELL (más USER y LOGNAME si el usuario objetivo no es root). Se recomienda utilizar siempre la --loginopción (en lugar de su acceso directo -) para evitar efectos secundarios provocados por la mezcla de ambientes.

Cuando está bajo --logino -l, sutambién ejecuta unaccesoshell, que a su vez genera el .profile( .bashrcdebe obtenerse siempre).

Para ver qué archivos están cargados, inserte una línea simple al principio de ellos:

echo "$BASH_SOURCE" >&2

información relacionada