GNU/Linux >> Znalost Linux >  >> Linux

Zdrojový příkaz v Linuxu vysvětlen

příkaz zdroje v systému Linux je velmi oblíbená funkce, kterou denně spouštějí správci systému.

Jaká je však funkce příkazu source?

Používá se k obnovení aktuálního prostředí shellu , příkaz source lze také použít k importu funkcí do jiných skriptů bash nebo ke spouštění skriptů do aktuálního prostředí shellu.

V dnešním tutoriálu se podíváme na to, jak by se měl příkaz source používat na Linuxu.

Příkazy budou spouštěny v prostředí Debianu 10 s GNOME, ale budou fungovat pro každou distribuci.

Interní informace zdrojového příkazu

Než začnete, je důležité dokonale porozumět tomu, co jsou proměnné prostředí a prostředí.

Ve výchozím nastavení na Linuxu váš systém již vlastní několik proměnných prostředí pro ukládání různých informací, jako je shell, který se má použít, vaše hostitelské jméno nebo vaše aktuální uživatelské jméno.

Proměnné prostředí jsou inicializovány systémem a jsou zděděny všemi procesy v systému. V důsledku toho, když spouštíte instanci shellu, musíte získat hodnotu proměnných prostředí ve vašem systému.

$ echo $USER
devconnected

Na druhou stranu proměnné shellu jsou proměnné deklarované v kontextu instance shellu a nejsou sdíleny s jinými shelly ani s podřízenými procesy.

$ VARIABLE=devconnected
$ echo $VARIABLE
devconnected

V Linuxu, když spustíte skript, je s největší pravděpodobností spuštěn v subshell.

V důsledku toho nebudete moci mít proměnné definované ve vašem prvním shellu spuštěné ve skriptu, jednoduše nesdílejí stejné prostředí.

Toto řeší příkaz source.

Příkaz source se používá k vyhodnocení souboru předaného jako argument v kontextu aktuálního provádění. Příkaz source, zkrácený jako ‚.‘, se většinou používá v kontextu shellů spouštěných v oknech terminálu.

$ source filename [arguments]

Všimněte si, že když jsou uvedeny argumenty, jsou nastaveny jako poziční parametry pro zadaný skript.

Poznámka :zdrojová dokumentace se nachází uvnitř dokumentace bash. Chcete-li si jej přečíst, napište „man bash“ a vyhledejte odstavec zdrojového příkazu.

Zdroj pro aktualizaci vašeho aktuálního prostředí shellu (.bashrc)

Jedním z hlavních důvodů použití zdroje je obnovení aktuálního prostředí prostředí spuštěním souboru bashrc.

Připomínáme, že .bashrc je soubor skriptu spuštěný při každém spuštění instance interaktivního prostředí.

Je definován na základě jednotlivých uživatelů a je umístěn ve vašem domovském adresáři.

Řekněme například, že chcete do prostředí shellu přidat nový alias.

Otevřete svůj soubor .bashrc a přidejte do něj nový záznam.

alias ll='ls -l'

Nyní zkuste spustit příkaz nového aliasu přímo v terminálu.

Jak vidíte, změny nebyly přímo aplikovány ve vašem aktuálním prostředí.

Aby se změny projevily, spusťte příkaz source s příponou .bashrc soubor jako argument.

$ source ~/.bashrc

Alternativní způsob, jak to udělat, je spustit jej se syntaxí tečky

$ . ~/.bashrc

Pokud se pokusíte znovu spustit svůj alias, měli byste jej spustit

Zdroj pro spuštění skriptu v aktuálním kontextu

Jak bylo vysvětleno dříve, příkaz source lze použít k spuštění skriptu v kontextu aktuálního prostředí .

Pro ilustraci tohoto bodu definujme lokální proměnnou shellu ve vašem aktuálním prostředí shellu.

$ VARIABLE=devconnected

Nyní vytvořte nový skript a vložte do něj následující obsah

#!/bin/bash

echo $VARIABLE
echo $LOGNAME

Proměnná VARIABLE představuje lokální proměnnou shellu, kterou jsme vytvořili dříve, a proměnná LOGNAME je proměnná prostředí na vašem hostiteli.

Uložte skript a udělte oprávnění ke spuštění nově vytvořenému skriptu (k provedení tohoto příkazu budete potřebovat oprávnění sudo)

$ sudo chmod ugo+x <script>

Pokud se pokusíte skript spustit, měli byste vidět následující výsledek

Jak můžete vidět, lokální proměnná $VARIABLE nebyla vytištěna na standardní výstup.

Je to proto, že skript byl proveden v podshell, který má vlastní sadu lokálních proměnných. Proměnná prostředí však byla vytištěna.

Abychom tento skript provedli v kontextu našeho aktuálního shellu, použijeme příkaz source.

Jak můžete vidět, v tomto případě byla proměnná $VARIABLE správně vytištěna na standardní výstup.

Zdroj pro import funkce skriptu

Jednou ze skvělých funkcí příkazu source je aktualizace funkce skriptu, která umožňuje větší opětovné použití vašich stávajících funkcí shellu.

Pro ilustraci tohoto bodu si vezměme příklad funkce, která vytiskne aktuálního uživatele na standardní výstup.

Vytvořte nový soubor skriptu a vložte do něj následující obsah.

$ nano script

#!/bin/bash
# Print the current user to the standard output
printUser() {
   echo $USER
}

Vytvořte další skript a použijte zdrojovou funkci k importu vaší funkce printUser.

$ nano import-script

#!/bin/bash
source ./script
printUser

Přidělte správná oprávnění souboru, který chcete spustit. Pro soubor obsahující funkci, kterou chcete importovat, nemusíte mít oprávnění ke spuštění.

$ sudo chmod u+x import-script
$ ./import-script

Toto byste měli vidět na obrazovce.

Jak můžete vidět, funkce byla správně naimportována a provedena a vytisklo se jméno aktuálního uživatele mého hostitele.

Zdroj pro čtení proměnných ze souboru

Dalším skvělým využitím příkazu source v Linuxu je čtení proměnných ze souboru.

Řekněme například, že máte soubor s následujícím obsahem v souboru s názvem „proměnné

NAME=devconnected
WEBSITE=devconnected.com
DESCRIPTION="best educational website online"

V jiném souboru skriptu byste mohli tyto proměnné používat pomocí příkazu source ke čtení proměnných.

Vytvořte skript a vložte do něj následující obsah.

$ nano variable-script

#!/bin/bash
source ./variables
echo $NAME is a website located at $WEBSITE and it is probably the $DESCRIPTION

Odstraňování problémů

V některých případech můžete narazit na chyby při pokusu o zdrojové soubory pomocí příkazu source.

Zde je seznam běžných chyb při pokusu o zdrojové soubory.

Zdrojový příkaz nebyl v systému Linux nalezen

V některých případech můžete narazit na tuto chybu

$ source: command not found

Nebo pomocí sudo můžete mít také chybu zdrojového příkazu nenalezen.

$ sudo: source: command not found

Snadnou opravou je provést příkaz jako uživatel root pomocí „su“.

$ sudo -s
$ source .bashrc

Všimněte si, že můžete také použít „tečkovou syntaxi“, která je ekvivalentem příkazu source.

$ . .bashrc

Závěr

V dnešním tutoriálu jste se naučili, co je zdrojový příkaz v Linuxu a jak můžete spouštět skripty v kontextu aktuálního prostředí.

Také jste se dozvěděli, že jej lze použít k importu funkcí nebo proměnných z jednoduchého souboru do souboru skriptu.

Pokud chcete další návody týkající se administrace systému Linux, máme na devconnected kompletní kategorii věnovanou tomu. Klikněte na obrázek níže a přečtěte si je.


Linux
  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz

  1. Příkaz historie v Linuxu Vysvětleno do hloubky

  2. Příkaz ls v Linuxu:17 vysvětlení užitečných příkladů

  3. Linux cd příkaz

  1. W Command v Linuxu

  2. At Command v Linuxu

  3. Příklady příkazů chsh v Linuxu