GNU/Linux >> Znalost Linux >  >> Linux

Zdrojový příkaz nebyl nalezen

Mnohokrát, když pracujeme na Linuxu, narazíme na docela běžnou chybu týkající se zdroje. Tato chyba je source:command not found a dnes vám vysvětlíme vše, co o ní potřebujete vědět.

V tomto článku se dozvíte, co je to zdroj, proč k této chybě dochází a samozřejmě se také dozvíte, jak ji vyřešit, takže pokud se vám zobrazuje chybové komando se zdrojovým kódem, které se na vašem systému Linux nenachází, čtěte dál.

Za prvé, co přesně je zdrojový příkaz? Je důležité uvést, že zdroj není skutečný softwarový balík pro Linux , není to správný program jako například du, egrep, find atd. Zdroj je vestavěný příkaz , je součástí softwarového balíčku bash .

Abychom pochopili, co to dělá, musíme nejprve vědět, jaké jsou proměnné prostředí a proměnné prostředí v Linuxu. Pokaždé, když otevřeme novou relaci SSH na systému Linux, shell automaticky načte některé výchozí proměnné. Tyto proměnné jsou vhodné pro většinu úloh, ale pro ostatní možná budeme muset provést nějaké změny, a to je místo, kde na scénu vstupuje zdrojový příkaz.

Pokud chceme změnit některé proměnné, aby se například spustil skript, pak je nejlepší použít zdroj. Většinu času, když spouštíme skript na Linuxu, poběží v podskořápce, a tedy nepoběží ve stejném prostředí jako naše aktuální shellová relace. Zdroj to vyřeší pro použití, pokud potřebujeme použít nějaké vlastní proměnné.

Nejprve budeme muset definovat proměnnou v našem současném prostředí shellu. Jakmile to uděláme, můžeme použít zdroj ke změně prostředí skriptu, který spouštíme, a nastavit ho jako naše aktuální prostředí, které zpřístupní novou proměnnou pro skript, který spouštíme.

To může být v některých situacích velmi užitečné, se zdrojem můžeme udělat ještě více, i když to není smyslem tohoto článku. Pokud tedy při používání zdroje uděláme něco špatně, můžeme dostat chyby a jednou z nich bude samozřejmě příkaz Zdroj nebyl nalezen, takže se podívejme, co tuto chybu způsobuje.

Příčiny příkazu Zdroj nebyl nalezen

Tuto chybu obvykle dostaneme jako „zdroj:příkaz nenalezen“ nebo, pokud používáme sudo, jako „sudo:zdroj:příkaz nenalezen“, v obou případech je problém v tom, že relace shellu očekává, že spustíme program. , ale nezapomeňte, že zdroj není program , ve skutečnosti spouštíme vestavěný bash, jak bylo vysvětleno dříve.

Vzhledem k tomu, že si terminál myslí, že se pokoušíme spustit program s názvem „zdroj“, vyvolá chybu nenalezeno.

K této chybě také dochází, pokud se pokusíme spustit program, který není v našem systému nainstalován, například pokud se pokusíme spustit něco, co neexistuje, například „něco“, zobrazí se stejná chyba:

[[email protected] ~]$ somethingsomething
bash: somethingsomething: command not found

Jak to tedy můžeme vyřešit? To je to, co nyní vysvětlíme.

Jak mohu opravit chybu Source command not found v Linuxu?

Nejlepším a nejjednodušším způsobem, jak tento problém vyřešit, je místo toho spustit příkaz pomocí root , takže budeme muset spustit relaci root pomocí su nebo sudo -s . Pokud se zobrazí chyba ověřování nebo chyba oprávnění, znamená to, že se nemůžete přihlásit jako root se svým aktuálním uživatelem, požádejte prosím odpovědnou osobu, aby změnila oprávnění, abyste se mohli dočasně přihlásit jako root a problém vyřešit.

Jakmile jste přihlášeni jako root, zkuste spustit příkaz, který předtím vrátil chybu zdroje:tentokrát by měl běžet v pořádku.

Dalším způsobem, jak to vyřešit, je vynutit si použití bash . V některých distribucích Linuxu není vestavěný zdroj ve výchozím nastavení k dispozici, protože příkaz sh nevolá bash, ale jiné programy, jako je například „dash“. V tomto případě tedy můžeme upravit skript, který se pokoušíme spustit, a změnit /bin/sh nahoře na /bin/bash takto:

#!/bin/bash

Třetím řešením, i když ne vždy funguje, je použít tečku místo zdroje . Ano, funguje to stejným způsobem, takže pokud spouštíme skript jako tento:

source ./myshinyscript

Zdroj budeme muset nahradit tečkou. Ano, tečka:

. ./myshinyscript

Je velmi důležité mít mezi dvěma tečkami mezeru, stejně jako v příkladu.

Závěr

Takže to bylo docela jednoduché, jak jste viděli. Skutečným problémem s chybou příkazu source not found je pochopit, proč se to děje, a nyní víte, že se to stává, protože relace shellu zaměňuje zdroj za program, i když je to ve skutečnosti vestavěný Bash.

Jakmile to pochopíme, řešení problému je snadné, ve skutečnosti jsme vám dali tři řešení, která můžete vyzkoušet, kterými jsou spuštění skriptu jako root, úprava skriptu tak, aby jej přinutil spustit bash, nebo použití tečky místo zdroje v příkazovém řádku.

Zdrojový příkaz nenalezen byl naposledy upraven:9. dubna 2020 Estebanem Borgesem
Linux
  1. Subscription-manager:příkaz nenalezen

  2. dnf:příkaz nenalezen

  3. bc:příkaz nenalezen

  1. dpkg:příkaz nenalezen

  2. id:příkaz nenalezen

  3. w:příkaz nenalezen

  1. ifrename:příkaz nenalezen

  2. df:příkaz nenalezen

  3. du:příkaz nenalezen