GNU/Linux >> Znalost Linux >  >> Linux

Jak opravit chybu Příkaz nenalezen v Linuxu

Když se pokoušíte spustit příkaz (s nebo bez sudo ) a zobrazí se chybová zpráva „Příkaz nenalezen“, což znamená, že skript nebo soubor, který se pokoušíte spustit, neexistuje v umístění určeném proměnnou PATH. Co je tato proměnná a jak můžete spouštět příkazy, které nemůže najít?

Porozumění proměnným prostředí

Ve výpočetní technice proměnná je zástupný symbol pro hodnotu, která se může změnit. Proměnné používáte každý den v běžné řeči, i když o nich tak nepřemýšlíte. Když řeknete „můj notebook“, používáte „laptop“ jako obecnou proměnnou nebo zástupný symbol pro počítač, který nosíte, bez ohledu na to, zda se jedná o Lenovo, Mac nebo Raspberry Pi v luxusním obalu.

Proměnné prostředí jsou speciální proměnné, které obsahují informace o vaší přihlašovací relaci. Mnoho z těchto proměnných je nastaveno ve výchozím nastavení během instalace nebo vytváření uživatele. Jsou uloženy pro systémové prostředí, aplikace a skripty, které lze použít při provádění příkazů.

Existují globální nebo systémem definované proměnné a místní nebo uživatelem definované proměnné.

Globální proměnné

Globální proměnné jsou předdefinovány ve vašem přihlašovacím shellu, ale nejsou neměnné a lze je upravit nebo odstranit podle vašich preferencí. Můžete použít printenv nebo env příkazy k zobrazení proměnných prostředí ve vašem systému:

$ 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 
[...]

env příkaz vytiskne všechny globální proměnné prostředí. Proměnné rozlišují velká a malá písmena a všechny distribuce Linuxu ve výchozím nastavení používají velká písmena pro názvy proměnných prostředí.

[ Mějte své oblíbené příkazy Git, aliasy a tipy po ruce. Stáhněte si cheat sheet Git. ]

Místní proměnné

Lokální proměnná existuje pouze v rámci specifického shellu. Proto, když definujete lokální proměnnou, je dostupná pouze ve vašem aktuálním shellu. Nešíří se ani nepřetrvává do nové relace shellu, pokud ji neexportujete jako globální proměnnou.

Lokální proměnné jsou často definovány malými písmeny, aby nedošlo k přepsání globální proměnné se stejným názvem.

Proměnná prostředí PATH

Globální proměnná prostředí PATH uvádí adresáře, které váš systém hledá pro platné, spustitelné příkazy. Ve výchozím nastavení obsahuje standardní adresáře, které normálně ukládají spustitelné soubory jako /usr/bin , /usr/local/bin , a tak dále.

Když zadáte příkaz, například grep nebo vim váš systém prohledá všechny adresáře uvedené ve vaší proměnné PATH v pořadí, v jakém jsou uvedeny, dokud nenajde spustitelný soubor se stejným názvem. Pokud se mu nepodaří nějaký najít, zobrazí chybu „Příkaz nenalezen“.

$ 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 způsobů, jak opravit chyby „Příkaz nenalezen“

Existuje několik způsobů, jak tento problém vyřešit. Zde je pět z nich.

1. Zahrňte cestu

Ne vše, co chcete provést, vám musí stát v cestě. Soubory můžete spouštět přímo zadáním cesty k souboru, který chcete spustit. Identifikací umístění souboru obejdete nutnost, aby váš systém vůbec prohledával vaši cestu.

Předpokládejme například, že máte skript s názvem hello že chcete běžet. Nachází se ve vašem domovském adresáři a již jste jej označili jako spustitelný pomocí chmod +x :

$ ~/hello
hello world

Tím, že svému systému sdělíte umístění souboru, proměnná PATH není nikdy zahrnuta a soubor běží podle očekávání.

2. Přidat novou cestu

Případně můžete do PATH přidat nový adresář. Přidejte své spustitelné soubory do tohoto adresáře a poté je můžete spustit bez ručního zadávání cesty:

$ 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

Možná budete chtít přidat nové proměnné prostředí PATH do svého přihlašovacího prostředí tak, že je zahrnete do souboru .bashrc soubor jako nové nastavení.

3. Zkopírujte soubor do existujícího umístění cesty

Pokud chcete spustit svůj binární soubor nebo skript, zkopírujte jej do kterékoli z cest adresářů, které jsou již uvedeny v proměnné prostředí PATH:

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

4. Řekněte Bashovi, kde se má hledat

Pravděpodobně nejjednodušší možností, zejména pro jednorázové skripty nebo aplikace, je říct Bashovi, aby nezvažoval PATH, ale raději se „podíval sem“. Udělejte to umístěním tečky a lomítka před název příkazu, skriptu nebo aplikace. Pro hello skript, vypadá to takto:

$ sudo ./hello
hello world

V systému nejsou prováděny žádné trvalé změny. To může být užitečné, pokud píšete skript a chcete jej otestovat, než jej zkopírujete nebo přesunete do jeho normálního úložiště (pravděpodobně podél PATH).

5. Nainstalujte balíček

Někdy, když se pokusíte použít příkaz a Bash zobrazí chybu „Příkaz nenalezen“, může to být způsobeno tím, že program není nainstalován ve vašem systému. Opravte to instalací softwarového balíčku obsahujícího příkaz. Pokud například nemáte nainstalovaný Nmap, pak nmap příkaz selže, když jej zadáte do terminálu:

$ 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}
[...]

[ Chcete se dozvědět více? Zaregistrujte se a získejte bezplatnou zkušební verzi plného přístupu k učebním osnovám společnosti Red Hat. ]

Držte se cesty

Proměnná PATH je mocný nástroj, který můžete použít k přizpůsobení toho, jak váš systém reaguje na příkazy, takže si věnujte nějaký čas, než se s tím zorientujete. Často se používá při spouštění příkazů k nalezení spustitelného příkazu.

V tomto tutoriálu jste se naučili pět způsobů, jak opravit chybu „Příkaz nenalezen“ ve vašem terminálu – tři z nich spoléhají na proměnnou PATH. Nyní, když víte, co jsou proměnné a jak se nacházejí spustitelné soubory příkazů, nebudete tak zmatení, když se na obrazovce objeví chyba „Příkaz nenalezen“.


Linux
  1. Jak opravit chybu „semanage command“ Not Found Error v CentOS

  2. Příkaz yum-config-manager nenalezen [Opravit]

  3. c_rehash :Chyba příkazu nenalezena – Řešení

  1. Příkaz nenalezen v Bash Opraveno

  2. Jak opravit příkaz Sudo, který nebyl nalezen v Debianu 10

  3. Jak opravit příkaz Ifconfig nebyl nalezen v Linuxu Ubuntu

  1. Jak opravit chybu Rust „linker ‚cc‘ nenalezen“ v systému Linux

  2. envsubst:příkaz nenalezen

  3. Chyba Linuxu:bash:rsync:příkaz nenalezen