GNU/Linux >> Znalost Linux >  >> Linux

Importujte funkce a proměnné do Bash pomocí příkazu source

Když se přihlásíte do prostředí Linux, zdědíte specifické pracovní prostředí. Prostředí , v kontextu shellu, znamená, že jsou pro vás již nastaveny určité proměnné, což zajišťuje, že vaše příkazy budou fungovat tak, jak mají. Například proměnná prostředí PATH definuje, kde váš shell hledá příkazy. Bez něj by téměř vše, co se pokusíte udělat v Bash, selhalo s příkazem nenalezen chyba. Vaše prostředí, i když je pro vás při plnění každodenních úkolů většinou neviditelné, je životně důležité.

Existuje mnoho způsobů, jak ovlivnit prostředí prostředí. Můžete provádět úpravy v konfiguračních souborech, jako je ~/.bashrc a ~/.profile , můžete spouštět služby při spuštění a můžete vytvářet své vlastní příkazy nebo skriptovat své vlastní funkce Bash.

Přidejte do svého prostředí pomocí zdroje

Bash (spolu s některými dalšími shelly) má vestavěný příkaz nazvaný source . A zde to může být matoucí:source provádí stejnou funkci jako příkaz . (ano, to je jen jedna tečka) a není stejný source jako Tcl příkaz (který se může objevit na obrazovce, pokud zadáte man source ). Vestavěný source příkaz není ve vaší PATH vlastně vůbec. Je to příkaz, který je součástí Bash, a pro získání dalších informací o něm můžete zadat help source .

. příkaz je kompatibilní s POSIX. source příkaz není definován POSIX, ale je zaměnitelný s . příkaz.

Více o Bash

  • Bashův cheat
  • Úvod do programování pomocí Bash
  • Průvodce systémového administrátora skriptováním v Bash
  • Nejnovější články o Bash

Podle Bash help , source příkaz spustí soubor ve vašem aktuálním shellu. Klauzule "ve vašem aktuálním prostředí" je významná, protože to znamená, že nespouští podskořápku; tedy cokoli, co spustíte pomocí source děje se v rámci a ovlivňuje vaše aktuální prostředí.

Než prozkoumáte, jak source může ovlivnit vaše prostředí, zkuste source na testovací soubor, aby se zajistilo, že spustí kód podle očekávání. Nejprve vytvořte jednoduchý skript Bash a uložte jej jako soubor s názvem hello.sh :

#!/usr/bin/env bash
echo "ahoj světe"

Pomocí source , můžete tento skript spustit i bez nastavení spustitelného bitu:

zdroj $ hello.sh
ahoj světe

Můžete také použít vestavěný . příkaz pro stejné výsledky:

$ . hello.sh
ahoj světe

source a . příkazy úspěšně provedou obsah testovacího souboru.

Nastavte proměnné a importní funkce

Můžete použít source k "importování" souboru do prostředí shellu, stejně jako byste mohli použít include klíčové slovo v C nebo C++ pro odkaz na knihovnu nebo import klíčové slovo v Pythonu pro přidání modulu. Toto je jedno z nejběžnějších použití source a je to běžné výchozí zahrnutí do .bashrc soubory do source soubor s názvem .bash_aliases takže všechny vlastní aliasy, které definujete, se importují do vašeho prostředí, když se přihlásíte.

Zde je příklad importu funkce Bash. Nejprve vytvořte funkci v souboru s názvem myfunctions . Toto vytiskne vaši veřejnou IP adresu a vaši místní IP adresu:

funkce myip() {
        curl http://icanhazip.com      

        ip addr | grep inet$IP | \
        vyjmout -d"/" -f 1 | \
        grep -v 127\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}

Importujte funkci do svého shellu:

$ source myfunctions 

Otestujte svou novou funkci:

$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 23.8. před>

Vyhledat zdroj

Když použijete source v Bash prohledá váš aktuální adresář pro soubor, na který odkazujete. To se nestává ve všech shellech, takže pokud nepoužíváte Bash, zkontrolujte si dokumentaci.

Pokud Bash nemůže najít soubor ke spuštění, prohledá vaši PATH namísto. Opět, toto není výchozí nastavení pro všechny shelly, takže pokud nepoužíváte Bash, zkontrolujte si dokumentaci.

To jsou oba příjemné funkce v Bash. Toto chování je překvapivě výkonné, protože vám umožňuje ukládat běžné funkce do centralizovaného umístění na vašem disku a poté zacházet s vaším prostředím jako s integrovaným vývojovým prostředím (IDE). Nemusíte se starat o to, kde jsou vaše funkce uloženy, protože víte, že jsou ve vašem místním ekvivalentu /usr/include , takže bez ohledu na to, kde se nacházíte, když je získáváte, Bash je najde.

Můžete například vytvořit adresář s názvem ~/.local/include jako úložný prostor pro běžné funkce a poté vložte tento blok kódu do vašeho .bashrc soubor:

for i v $HOME/.local/include/*;
  udělejte zdroj $i
hotovo

To "importuje" jakýkoli soubor obsahující vlastní funkce v ~/.local/include do prostředí vašeho shellu.

Bash je jediný shell, který prohledává jak aktuální adresář, tak vaši PATH když použijete buď source nebo . příkaz.

Použití zdroje pro open source

Pomocí source nebo . spouštění souborů může být pohodlný způsob, jak ovlivnit vaše prostředí a zároveň zachovat modulární změny. Až budete příště přemýšlet o zkopírování a vložení velkých bloků kódu do souboru .bashrc zvažte umístění souvisejících funkcí nebo skupin aliasů do vyhrazených souborů a poté použijte source k jejich požití.


Linux
  1. Otočte a archivujte protokoly pomocí příkazu logrotate systému Linux

  2. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  3. '&&' vs. '&' s příkazem 'test' v Bash

  1. Sledujte příkazy a úkoly pomocí příkazu watch v systému Linux

  2. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  3. Procházení shellu Bash pomocí pushd a popd

  1. Dostat se do plevele s Buildah:Příkaz buildah unshare

  2. Rozdělte soubory na bloky pomocí vestavěného příkazu split

  3. Příkaz „eval“ v Bash?