Debian 10 error “Command not found” en comandos de administrador (su)
Debian 10 se convirtió en la versión el estable el 12 de enero de 2019, ya ha pasado algún tiempo y los que la hemos probado nos vamos encontrando con novedades. La versión 9 no traía instalados de forma predeterminada comandos tan famosos como ifconfig
, netstat
, aptitude
, etc.. lo que nos obligó a actualizar la forma de trabajar. Todo esto se podía arreglar instalando los paquetes correspondientes, como net-tools, pero cuando hay un cambio significativo como es el caso de la adopción del comando ip
, yo prefiero adaptarme cuanto antes.
En Debian 10 Buster, la primera sorpresa nos la llevamos cuando al ejecutar el comando su
para identificarnos como root, resulta que muchos comandos nos lanzan el error “Command not found”… lo primero que podemos pensar es que han vuelto a quitar comandos, pero tras probar dos o tres y ver que tampoco funcionan, no puede ser eso. Tras comprobar la variable $PATH para ver dónde está buscando los comandos nos encontramos con lo directorios de los usuarios sin privilegios, no hay rastro de los directorios sbin
del root:
Pues aquí está le explicación:
- El nuevo
'su'
sin argumentos, preserva el entorno de ejecución, NO CAMBIA las variables de entorno PATH e IFS, mientras que su antiguo siempre restablecería PATH e IFS . - La nueva
'su -'
(crear un nuevo entorno) hará exactamente eso, mientras que la antiguasu
siempre conservaría el contenido de DISPLAY y XAUTHORITY.
Más información: https://sources.debian.org/src/util-linux/2.33.1-0.1/debian/util-linux.NEWS/
Esto se traduce a que si antes estábamos acostumbrados a ejecutar su
y cambiar el entorno a root, ahora tendemos que ejecutar su -
Configurar la variable $PATH para el root
Si la queremos modificar los directorios que figuran en la variable $PATH del root podemos modificar el fichero /etc/login.defs
. En él encontraremos las siguientes lineas:
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Si queremos personalizarlas a nuestro gusto, sólo tendremos que quitar o poner los directorios deseados.
¿Y para qué quiero modificar el PATH del root?, pues en general no suele ser necesario, pero puede que instalemos software que usemos frecuentemente y que no figure en la lista por defecto. O para algo tan irrelevante como ejecutar comandos como cowsay
que se consideran juegos y estarán en /usr/games/
que el root no tiene en su PATH 🙂
Etiqueta:portada