Cada administrador del sistema recibió este error al menos una vez en un shell:“bash:comando no encontrado “.
Sin embargo, estaba bastante seguro de que escribió el comando correctamente o de que instaló la herramienta que realmente está tratando de ejecutar.
Entonces, ¿por qué recibes este error?
El “bash:comando no encontrado El error ” puede ocurrir por varias razones cuando se ejecutan comandos en un terminal Bash.
Hoy vamos a echar un vistazo a las diferentes formas de resolver el "comando no encontrado ” error en Bash.
Conceptos de Bash y PATH
Antes de comenzar con la solución, es importante tener algunos conceptos sobre lo que la variable de entorno PATH es y cómo se relaciona con los comandos que ejecuta.
RUTA es una variable de entorno que enumera los diferentes directorios que su terminal bash visitará para encontrar utilidades en su sistema.
Para echar un vistazo a su variable de entorno PATH, simplemente use el "echo ” con el comando RUTA variables.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Como puede ver, PATH se define mediante una lista de diferentes rutas del sistema delimitadas por dos puntos.
Son los diferentes caminos visitados por mi intérprete para ejecutar comandos.
Si tuviera que eliminar una entrada de la RUTA, o eliminar la RUTA por completo, no podría ejecutar comandos en bash sin especificar la ruta completa al binario.
Es un punto importante de entender porque no poder ejecutar un comando no significa que su binario haya sido eliminado en el sistema.
Ahora que comprende cómo se relacionan las variables de entorno con su intérprete bash, veamos cómo puede resolver su error.
Verificar que el archivo existe en el sistema
El primer paso para solucionar este error es verificar que el comando que busca realmente existe en el sistema.
Realmente no tiene sentido seguir adelante si escribió mal el comando o si no lo instaló en absoluto.
Digamos, por ejemplo, que no puede ejecutar el "ls " dominio.
Verifique que el binario realmente exista buscándolo en el sistema.
$ /usr/bin/find / -name ls 2> /dev/null
/bin/ls
/usr/lib/klibc/bin/ls
Con el comando de búsqueda, puede ubicar el binario junto con el directorio donde está almacenado.
Es bastante importante porque necesitaremos agregar esta ruta a nuestra variable de entorno PATH más tarde.
Verifique su variable de entorno PATH
La mayoría de las veces, se encontrará con el mensaje “bash:comando no encontrado ” después de cambiar su entorno PATH para agregar nuevas entradas.
Primero, verifique que la ruta que buscó antes esté listada en su variable de entorno PATH.
$ echo $PATH
/home/user/custom:/home/user
Como puede ver aquí, el directorio "/bin" no enumerado en mi variable de entorno PATH.
De forma predeterminada, la RUTA se define en el archivo "/etc/environment" para todos los usuarios del sistema.
Si su variable de entorno PATH es diferente de la definida en el archivo de entorno, es porque ha anulado la RUTA.
Ahora que tiene dos opciones:o sabe dónde exportó la variable PATH o no.
Corregir las secuencias de comandos de su perfil:bashrc, bash_profile
En la mayoría de los casos, modificó el .bashrc o el .bash_profile para agregar su anulación de PATH.
Para buscar donde exportaste tu PATH , ejecuta el siguiente comando
$ /usr/bin/grep -rn --color "export PATH" ~/. 2> /dev/null
./.bashrc:121:export PATH="/home/devconnected"
Este comando devuelve el archivo donde se exportó la RUTA, así como el número de línea.
Edite este archivo y agregue la ruta desde la primera sección a la declaración de exportación.
$ nano /home/user/.bashrc
export PATH="/home/devconnected:/bin"
Guarde su archivo y salga del editor nano.
Para que se apliquen los cambios, deberá obtener su terminal bash actual.
Esto asegurará que el archivo .bashrc se ejecute nuevamente en el terminal de shell actual.
$ source .bashrc
¿Por qué puede ejecutar la fuente sin tener que especificar la ruta completa?
Porque "fuente" es un comando integrado de shell .
Pruebe a ejecutar "incorporado fuente .bashrc" por ejemplo
Ahora, puede intentar ejecutar el comando que no pudo ejecutar antes.
$ ls
file devconnected file2 directory1 swap file3
Impresionante !
Reparaste el “bash:comando no encontrado ” error en Linux!
Restablecer la variable de entorno PATH correctamente
Incluso si resuelve su problema, deberá definir su variable de entorno PATH correctamente si no desea modificar su archivo bashrc todo el tiempo.
Primero, eche un vistazo a la variable PATH definida en el archivo “/etc/environment”.
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Para restablecer su variable de entorno PATH en su entorno, exporte la PATH definida en el archivo de entorno.
$ export=PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Ahora, modifique su archivo .bashrc pero use la sintaxis $PATH para agregar sus rutas a la variable PATH existente.
$ sudo nano ~/.bashrc
export PATH="$PATH:/home/devconnected"
Salga del archivo y obtenga su archivo bashrc para que se apliquen los cambios.
$ source ~/.bashrc
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/devconnected
Impresionante !
Ha restablecido con éxito su variable de entorno PATH, no debería obtener el "bash:comando no encontrado ” error más.
Ejecutar el comando como sudo
En algunos casos, tu variable de entorno PATH puede estar perfectamente configurada pero tendrás que ejecutar el comando como sudo.
Puede recibir este error o simplemente un simple "permiso denegado ” error.
En cualquier caso, primero asegúrese de tener derechos sudo con el comando sudo.
$ sudo -l
User user may run the following commands on ubuntu:
(ALL : ALL) ALL
Si este es el caso, debería poder ejecutar su comando como sudo.
$ sudo <command>
Felicitaciones !
Has resuelto el “bash:comando no encontrado ” error en su sistema.
Verifique que el paquete esté correctamente instalado
En algunos casos, cree que su comando está instalado pero no lo instaló para empezar.
Digamos, por ejemplo, que está buscando ejecutar el "htop ” pero no puedes hacerlo.
$ htop
bash : Command 'htop' not found
Para verificar si el comando está correctamente instalado, según su distribución, ejecute los siguientes comandos.
$ dkpg -s htop [Ubuntu/Debian]
dpkg-query: package 'htop' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
$ rpm -qa | grep htop [CentOS/RHEL]
En cualquier caso, deberá instalar el comando si desea ejecutarlo correctamente.
$ sudo apt-get install htop [Ubuntu/Debian]
$ sudo yum install htop [CentOS/RHEL]
Ahora puede intentar ejecutar el comando que faltaba.
$ htop
Conclusión
En este tutorial, aprendiste cómo puedes resolver el famoso “bash:comando no encontrado ” error que muchos administradores de sistemas encuentran todos los días.
Si resuelve su problema con una solución que no descrito en el artículo, asegúrese de dejar un comentario para ayudar a otros administradores.
Si está interesado en la administración del sistema Linux, tenemos una sección completa dedicada a ella en el sitio web, así que asegúrese de echarle un vistazo.