GNU/Linux >> Linux Esercitazione >  >> Linux

Come correggere un errore di comando non trovato in Linux

Quando stai tentando di eseguire un comando (con o senza sudo ) e ricevi un messaggio di errore che dice "Comando non trovato", ciò significa che lo script o il file che stai tentando di eseguire non esiste nella posizione specificata dalla tua variabile PATH. Cos'è questa variabile e come puoi eseguire comandi che non riesce a trovare?

Comprendere le variabili d'ambiente

In informatica, una variabile è un segnaposto per un valore che può cambiare. Usi le variabili ogni giorno nel discorso normale, anche se non le pensi come tali. Quando dici "il mio laptop", stai usando "laptop" come variabile generica o segnaposto per il computer che stai trasportando, indipendentemente dal fatto che sia un Lenovo, un Mac o un Raspberry Pi in una custodia elegante.

Variabili d'ambiente sono variabili speciali che contengono informazioni sulla tua sessione di accesso. Molte di queste variabili vengono impostate per impostazione predefinita durante l'installazione o la creazione dell'utente. Vengono archiviati per la shell di sistema, le applicazioni e gli script da utilizzare durante l'esecuzione dei comandi.

Esistono variabili globali o definite dal sistema e variabili locali o definite dall'utente.

Variabili globali

Le variabili globali sono predefinite nella shell di accesso, ma non sono immutabili e possono essere modificate o eliminate in base alle tue preferenze. Puoi usare printenv o env comandi per visualizzare le variabili di ambiente sul tuo sistema:

$ env 
SHELL=/bin/bash 
SESSION_MANAGER=local/kiwi.homelinux.local:@/tmp/.ICE-unix/1906,unix/kiwi.homelinux.local:/tmp/.ICE-unix/19
06 
WINDOWID=153092103 
COLORTERM=truecolor 
XDG_CONFIG_DIRS=/home/tux/.config/kdedefaults:/etc/xdg:/etc/kde/xdg 
LESS=-XR 
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 
HISTCONTROL=:ignorespace:ignoredups:ignorespace:ignoredups 
PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig 
[...]

L'env comando stampa tutte le variabili di ambiente globali. Le variabili fanno distinzione tra maiuscole e minuscole e tutte le distribuzioni Linux utilizzano le maiuscole per i nomi delle variabili di ambiente per impostazione predefinita.

[ Tieni a portata di mano i tuoi comandi, alias e suggerimenti Git preferiti. Scarica il cheat sheet di Git. ]

Variabili locali

Una variabile locale esiste solo all'interno di una shell specifica. Pertanto, quando si definisce una variabile locale, è disponibile solo nella shell corrente. Non si propaga o persiste in una nuova sessione di shell a meno che non la esporti come variabile globale.

Le variabili locali sono spesso definite in minuscolo per evitare di sovrascrivere una variabile globale con lo stesso nome.

La variabile d'ambiente PATH

La variabile di ambiente globale PATH elenca le directory che il tuo sistema cerca per i comandi validi ed eseguibili. Per impostazione predefinita, contiene directory standard che normalmente memorizzano eseguibili come /usr/bin , /usr/local/bin , e così via.

Quando digiti un comando, come grep o vim , il tuo sistema cerca in tutte le directory elencate nella tua variabile PATH, nell'ordine in cui sono elencate, finché non trova un file eseguibile con lo stesso nome. Se non riesce a trovarne uno, emette l'errore "Comando non trovato".

$ printenv PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/tux/.local/bin:/home/tux/bin

$ env $PATH
env: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/tux/.local/bin:/home/tux/bin

5 modi per correggere gli errori "Comando non trovato"

Esistono diversi modi per risolvere questo problema. Eccone cinque.

1. Includi il percorso

Non tutto ciò che vuoi eseguire deve essere nel tuo percorso. È possibile eseguire i file direttamente specificando il percorso del file che si desidera eseguire. Identificando la posizione del file, eludi la necessità che il tuo sistema cerchi il tuo percorso.

Ad esempio, supponiamo di avere uno script chiamato hello che vuoi correre. Si trova nella tua home directory e l'hai già contrassegnato come eseguibile con chmod +x :

$ ~/hello
hello world

Dicendo al tuo sistema la posizione del file, la variabile PATH non è mai coinvolta e il file viene eseguito come previsto.

2. Aggiungi un nuovo percorso

In alternativa, puoi aggiungere una nuova directory al tuo PERCORSO. Aggiungi i tuoi file eseguibili a quella directory, quindi puoi eseguirli senza fornire manualmente un percorso:

$ cp ~/hello ~/.local/bin
$ export PATH=$PATH:$HOME/.local/bin
$ printenv PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/tux/.local/bin

Potresti voler aggiungere le nuove variabili d'ambiente PATH alla tua shell di login includendole nel tuo .bashrc file come nuove impostazioni.

3. Copia un file in un percorso esistente

Se vuoi eseguire il tuo file binario o script, copialo in uno dei percorsi di directory già elencati nella variabile di ambiente PATH:

$ sudo cp ~/hello /usr/local/bin/
$ hello
hello world

4. Dì a Bash dove cercare

Probabilmente l'opzione più semplice, specialmente per script o applicazioni una tantum, è dire a Bash di non considerare il PERCORSO ma piuttosto di "guardare qui". A tale scopo, posiziona un punto e una barra davanti al comando, allo script o al nome dell'applicazione. Per il hello script, si presenta così:

$ sudo ./hello
hello world

Non vengono apportate modifiche permanenti al sistema. Questo potrebbe essere utile se stai scrivendo uno script e vuoi testarlo prima di copiarlo o spostarlo nella sua normale posizione di archiviazione (presumibilmente lungo il PERCORSO).

5. Installa un pacchetto

A volte, quando si tenta di utilizzare un comando e Bash visualizza l'errore "Comando non trovato", potrebbe essere perché il programma non è installato sul sistema. Correggerlo installando un pacchetto software contenente il comando. Ad esempio, se non hai installato Nmap, allora nmap comando non riesce quando lo digiti in un terminale:

$ nmap
nmap: command not found
$ sudo dnf install --assumeyes --quiet nmap
$ nmap
Nmap 7.92 ( https://nmap.org ) 
Usage: nmap [Scan Type(s)] [Options] {target specification}
[...]

[ Vuoi saperne di più? Iscriviti per una prova gratuita dell'accesso completo al curriculum di Red Hat. ]

Rimani sul percorso

La variabile PATH è un potente strumento che puoi utilizzare per personalizzare il modo in cui il tuo sistema risponde ai comandi, quindi prenditi del tempo per familiarizzare con esso. Viene spesso utilizzato durante l'esecuzione di comandi per trovare l'eseguibile del comando.

In questo tutorial, hai imparato cinque modi per correggere un errore "Comando non trovato" nel tuo terminale, tre dei quali si basano sulla variabile PATH. Ora che sai cosa sono le variabili e come vengono trovati gli eseguibili dei comandi, non rimarrai così perplesso quando sullo schermo apparirà l'errore "Comando non trovato".


Linux
  1. Come risolvere l'errore di ruggine "linker 'cc' non trovato" su Linux

  2. Come risolvere l'errore "semanage command" Not Found in CentOS

  3. Comando yum-config-manager non trovato [fissare]

  4. c_rehash :Errore comando non trovato – Soluzione

  5. envsubst:comando non trovato

5 soluzioni - Come correggere l'errore "Comando Zsh non trovato" in Linux o macOS

Come correggere l'errore "Comando Yum non trovato" in Linux [Aggiornamento 2022]

Fai in modo che il comando non sia stato trovato? Ecco come risolverlo

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

Come risolvere il comando Ifconfig non trovato su CentOS 7

Come risolvere il problema:il comando curl non ha trovato un errore