GNU/Linux >> Znalost Linux >  >> Linux

Příkaz nenalezen v Bash Opraveno

Každý správce systému dostal v shellu alespoň jednou tuto chybu:„bash:příkaz nenalezen “.

Byli jste si však zcela jisti, že jste příkaz napsali správně nebo že jste nainstalovali nástroj, který se ve skutečnosti pokoušíte spustit.

Proč se vám tedy zobrazuje tato chyba?

bash:příkaz nenalezen ” chyba může nastat z různých důvodů při spouštění příkazů v terminálu Bash.

Dnes se podíváme na různé způsoby, jak vyřešit „příkaz nenalezen ” chyba v Bash.

Koncepty Bash a PATH

Než začnete s řešením, je důležité mít několik představ o tom, co je proměnná prostředí PATH je a jak souvisí s příkazy, které spouštíte.

PATH je proměnná prostředí, která uvádí různé adresáře, které váš bash terminál navštíví, aby ve vašem systému našel nástroje.

Chcete-li se podívat na svou proměnnou prostředí PATH, jednoduše použijte „echo ” pomocí příkazu PATH proměnná.

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Jak můžete vidět, PATH je definována seznamem různých systémových cest oddělených dvojtečkami.

Jsou to různé cesty, které můj interpret navštěvuje za účelem spouštění příkazů.

Pokud bych odstranil položku z PATH nebo odstranil PATH všechny dohromady, nemohli byste spouštět příkazy v bash bez určení celé cesty k binárnímu souboru.

Je důležité porozumět tomu, protože neschopnost spustit příkaz neznamená, že váš binární soubor byl ze systému odstraněn.

Nyní, když rozumíte tomu, jak proměnné prostředí souvisí s vaším bash interpretem, pojďme se podívat, jak můžete svou chybu vyřešit.

Ověřte, že soubor v systému existuje

Prvním krokem k vyřešení této chyby je ověření, že hledaný příkaz v systému skutečně existuje.

Pokud jste příkaz napsali špatně nebo pokud jste jej vůbec nenainstalovali, opravdu není co řešit.

Řekněme například, že nemůžete spustit „ls “příkaz.

Ověřte, že binární soubor skutečně existuje, vyhledáním binárního souboru v systému.

$ /usr/bin/find / -name ls 2> /dev/null

/bin/ls
/usr/lib/klibc/bin/ls

Pomocí příkazu find můžete najít binární soubor spolu s adresářem, kde je uložen.

Je to docela důležité, protože budeme muset přidat tuto cestu do naší proměnné prostředí PATH později.

Ověřte svou proměnnou prostředí PATH

Většinou narazíte na „bash :příkaz nenalezen ” po změně prostředí PATH za účelem přidání nových položek.

Nejprve ověřte, že cesta, kterou jste dříve hledali, je uvedena v proměnné prostředí PATH.

$ echo $PATH

/home/user/custom:/home/user

Jak můžete vidět zde, adresář „/bin“ není uvedené v mé proměnné prostředí PATH.

Ve výchozím nastavení je PATH definována v souboru „/etc/environment“ pro všechny uživatele v systému.

Pokud se vaše proměnná prostředí PATH liší od proměnné definované v souboru prostředí, je to proto, že jste přepsali PATH.

Nyní, když máte dvě možnosti:buď víte, kam jste exportovali proměnnou PATH, nebo ne.

Oprava skriptů vašeho profilu:bashrc, bash_profile

Ve většině případů jste upravili soubor .bashrc nebo .bash_profile soubor, abyste mohli přidat své přepsání PATH.

Chcete-li vyhledat,kde jste exportovali svou PATH , spusťte následující příkaz

$ /usr/bin/grep -rn --color "export PATH" ~/. 2> /dev/null

./.bashrc:121:export PATH="/home/devconnected"

Tento příkaz vrátí soubor, do kterého byla exportována PATH, a také číslo řádku.

Upravte tento soubor a přidejte cestu z první sekce do příkazu exportu.

$ nano /home/user/.bashrc

export PATH="/home/devconnected:/bin"

Uložte soubor a ukončete nano editor.

Aby se změny uplatnily, budete muset získat svůj aktuální bash terminál.

To zajistí, že soubor .bashrc bude znovu spuštěn v aktuálním shellovém terminálu.

$ source .bashrc

Proč můžete spustit zdroj, aniž byste museli zadat úplnou cestu?

Protože „zdroj“ je příkaz vestavěný do prostředí .

Zkuste například spustit „builtin source .bashrc“

Nyní se můžete pokusit provést příkaz, který se vám předtím nepodařilo provést.

$ ls

file  devconnected  file2  directory1  swap file3

Úžasné !

Opravili jste „bash:příkaz nenalezen ” chyba na Linuxu!

Řádně resetujte proměnnou prostředí PATH

I když svůj problém vyřešíte, budete muset správně definovat proměnnou prostředí PATH, pokud nechcete soubor bashrc neustále upravovat.

Nejprve se podívejte na proměnnou PATH definovanou v souboru „/etc/environment“.

$ cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Chcete-li resetovat proměnnou prostředí PATH ve vašem prostředí, exportujte PATH definovanou v souboru prostředí.

$ export=PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Nyní upravte svůj soubor .bashrc, ale použijte syntaxi $PATH, abyste mohli připojit své cesty ke stávající proměnné PATH.

$ sudo nano ~/.bashrc

export PATH="$PATH:/home/devconnected"

Ukončete soubor a vytvořte zdrojový soubor bashrc, aby se změny uplatnily.

$ source ~/.bashrc

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/devconnected

Úžasné !

Úspěšně jste resetovali proměnnou prostředí PATH, neměli byste dostat „bash:příkaz nenalezen ” již chyba.

Proveďte příkaz jako sudo

V některých případech může být vaše proměnná prostředí PATH dokonale nakonfigurovaná, ale budete muset příkaz spustit jako sudo.

Může se vám zobrazit tato chyba nebo může stačit jednoduché „oprávnění odepřeno “chyba.

V každém případě se nejprve ujistěte, že máte práva sudo s příkazem sudo.

$ sudo -l

User user may run the following commands on ubuntu:
    (ALL : ALL) ALL

V takovém případě byste měli být schopni provést svůj příkaz jako sudo.

$ sudo <command>

Blahopřejeme !

Vyřešili jste „bash:příkaz nenalezen “ ve vašem systému.

Ověřte, že je balíček správně nainstalován

V některých případech se domníváte, že váš příkaz je nainstalován, ale nenainstalovali jste jej pro začátek.

Řekněme například, že chcete spustit „htop “, ale nejste schopni to udělat.

$ htop

bash : Command 'htop' not found

Chcete-li ověřit, zda je příkaz správně nainstalován, v závislosti na vaší distribuci spusťte následující příkazy.

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

V každém případě budete muset příkaz nainstalovat, pokud jej chcete spustit správně.

$ sudo apt-get install htop   [Ubuntu/Debian]

$ sudo yum install htop       [CentOS/RHEL]

Nyní se můžete pokusit spustit příkaz, který chyběl.

$ htop

Závěr

V tomto tutoriálu jste se naučili, jak můžete vyřešit slavný „bash:příkaz nenalezen ” chyba, se kterou se každý den setkává mnoho systémových administrátorů.

Pokud problém vyřešíte řešením, které není popsané v článku, nezapomeňte zanechat komentář, abyste pomohli ostatním správcům.

Pokud vás zajímá administrace systému Linux, na webu máme kompletní sekci, která se jí věnuje, takže se určitě podívejte.


Linux
  1. bash:netstat:příkaz nenalezen.

  2. ifrename:příkaz nenalezen

  3. nc:příkaz nenalezen

  1. id:příkaz nenalezen

  2. w:příkaz nenalezen

  3. df:příkaz nenalezen

  1. du:příkaz nenalezen

  2. rm:příkaz nenalezen

  3. mv:příkaz nenalezen