Ogni amministratore di sistema ha ricevuto questo errore almeno una volta in una shell:"bash:comando non trovato “.
Tuttavia, eri abbastanza sicuro di aver scritto il comando correttamente o di aver installato lo strumento che stai effettivamente tentando di eseguire.
Allora perché ricevi questo errore?
Il "bash:comando non trovato L'errore può verificarsi per vari motivi durante l'esecuzione di comandi in un terminale Bash.
Oggi esamineremo i diversi modi per risolvere il "comando non trovato " errore in Bash.
Concetti Bash &PATH
Prima di iniziare con la soluzione, è importante avere alcuni concetti su cosa sia la variabile d'ambiente PATH è e come è correlato ai comandi che esegui.
PATH è una variabile di ambiente che elenca le diverse directory che il tuo terminale bash visiterà per trovare le utilità sul tuo sistema.
Per dare un'occhiata alla tua variabile d'ambiente PATH, usa semplicemente "echo ” comando con il PERCORSO variabile.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Come puoi vedere, PATH è definito da un elenco di diversi percorsi di sistema delimitati da due punti.
Sono i diversi percorsi visitati dal mio interprete per eseguire i comandi.
Se dovessi rimuovere una voce dal PERCORSO o rimuovere il PERCORSO tutto insieme, non saresti in grado di eseguire comandi in bash senza specificare l'intero percorso del binario.
È un punto importante da capire perché non essere in grado di eseguire un comando non significa che il tuo file binario sia stato eliminato dal sistema.
Ora che hai capito in che modo le variabili di ambiente sono correlate al tuo interprete bash, vediamo come puoi risolvere il tuo errore.
Verifica che il file esista sul sistema
Il primo passaggio per risolvere questo errore è verificare che il comando che stai cercando esista effettivamente nel sistema.
Non ci sono davvero punti ad andare oltre se hai sbagliato a scrivere il comando o se non l'hai installato affatto.
Diciamo ad esempio che non puoi eseguire "ls comando ".
Verifica che il binario esista effettivamente cercando il binario sul sistema.
$ /usr/bin/find / -name ls 2> /dev/null
/bin/ls
/usr/lib/klibc/bin/ls
Con il comando find, puoi individuare il file binario insieme alla directory in cui è memorizzato.
È abbastanza importante perché dovremo aggiungere questo percorso alla nostra variabile d'ambiente PATH in seguito.
Verifica la tua variabile d'ambiente PATH
La maggior parte delle volte, ti imbatterai nel "bash:comando non trovato ” dopo aver modificato l'ambiente PATH per aggiungere nuove voci.
Innanzitutto, verifica che il percorso che hai cercato in precedenza sia elencato nella variabile di ambiente PATH.
$ echo $PATH
/home/user/custom:/home/user
Come puoi vedere qui, la directory "/bin" è non elencato nella mia variabile di ambiente PATH.
Per impostazione predefinita, il PATH è definito nel file "/etc/environment" per tutti gli utenti del sistema.
Se la tua variabile di ambiente PATH è diversa da quella definita nel file di ambiente, è perché hai sovrascritto la PATH.
Ora che hai due scelte:o sai dove hai esportato la variabile PATH o no.
Correzione degli script del tuo profilo:bashrc, bash_profile
Nella maggior parte dei casi, hai modificato il .bashrc o il .bash_profile per aggiungere il tuo PATH override.
Per cercare dove hai esportato il PERCORSO , esegui il comando seguente
$ /usr/bin/grep -rn --color "export PATH" ~/. 2> /dev/null
./.bashrc:121:export PATH="/home/devconnected"
Questo comando restituisce il file in cui è stato esportato il PERCORSO e il numero di riga.
Modifica questo file e aggiungi il percorso dalla prima sezione alla dichiarazione di esportazione.
$ nano /home/user/.bashrc
export PATH="/home/devconnected:/bin"
Salva il tuo file ed esci dall'editor nano.
Affinché le modifiche vengano applicate, dovrai procurarti il tuo terminale bash corrente.
Ciò assicurerà che il file .bashrc venga eseguito nuovamente nel terminale della shell corrente.
$ source .bashrc
Perché puoi eseguire il codice sorgente senza dover specificare il percorso completo?
Perché "source" è un comando integrato nella shell .
Prova ad eseguire ad esempio "sorgente incorporata .bashrc"
Ora puoi provare a eseguire il comando che non sei riuscito a eseguire prima.
$ ls
file devconnected file2 directory1 swap file3
Fantastico !
Hai corretto il "bash:comando non trovato ” errore su Linux!
Reimposta correttamente la variabile d'ambiente PATH
Anche se risolvi il tuo problema, dovrai definire correttamente la tua variabile di ambiente PATH se non vuoi modificare il tuo file bashrc tutto il tempo.
Per prima cosa, dai un'occhiata alla variabile PATH definita nel file "/etc/environment".
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Per reimpostare la variabile di ambiente PATH nel tuo ambiente, esporta il PATH definito nel file di ambiente.
$ export=PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Ora, modifica il tuo file .bashrc ma usa la sintassi $PATH per aggiungere i tuoi percorsi alla variabile PATH esistente.
$ sudo nano ~/.bashrc
export PATH="$PATH:/home/devconnected"
Esci dal file e cerca il tuo file bashrc per applicare le modifiche.
$ source ~/.bashrc
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/devconnected
Fantastico !
Hai reimpostato con successo la tua variabile di ambiente PATH, non dovresti ottenere il "bash:comando non trovato "errore più.
Esegui il comando come sudo
In alcuni casi, la tua variabile di ambiente PATH potrebbe essere perfettamente configurata ma dovrai eseguire il comando come sudo.
Potresti ricevere questo errore o semplicemente un semplice "autorizzazione negata errore.
In ogni caso, assicurati prima di avere i diritti sudo con il comando sudo.
$ sudo -l
User user may run the following commands on ubuntu:
(ALL : ALL) ALL
In questo caso, dovresti essere in grado di eseguire il comando come sudo.
$ sudo <command>
Congratulazioni !
Hai risolto il problema "bash:comando non trovato ” errore sul tuo sistema.
Verifica che il pacchetto sia installato correttamente
In alcuni casi, pensi che il tuo comando sia installato ma non hai installato il comando per cominciare.
Diciamo ad esempio che stai cercando di eseguire "htop ” ma non sei in grado di farlo.
$ htop
bash : Command 'htop' not found
Per verificare se il comando è installato correttamente, a seconda della tua distribuzione, esegui i seguenti comandi.
$ 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]
In ogni caso, se vuoi eseguirlo correttamente, dovrai installare il comando.
$ sudo apt-get install htop [Ubuntu/Debian]
$ sudo yum install htop [CentOS/RHEL]
Ora puoi provare a eseguire il comando che mancava.
$ htop
Conclusione
In questo tutorial, hai imparato come risolvere il famoso "bash:comando non trovato ” errore che molti amministratori di sistema riscontrano ogni giorno.
Se risolvi il tuo problema con una soluzione non descritto nell'articolo, assicurati di lasciare un commento per aiutare altri amministratori.
Se sei interessato all'amministrazione del sistema Linux, abbiamo una sezione completa ad essa dedicata sul sito Web, quindi assicurati di dare un'occhiata.