GNU/Linux >> Linux Esercitazione >  >> Linux

Comando non trovato in Bash risolto

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.


Linux
  1. gestore abbonamenti:comando non trovato

  2. dnf:comando non trovato

  3. id:comando non trovato

  4. w:comando non trovato

  5. df:comando non trovato

[Risolto] bash:sudo:comando non trovato

Risoluzione dei problemi di errore "Bash:comando non trovato" in Linux

nc:comando non trovato

aws-shell:comando non trovato

ln:comando non trovato

Postgresql -bash:psql:comando non trovato