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
sourcev 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
PATHnamí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/includejako úložný prostor pro běžné funkce a poté vložte tento blok kódu do vašeho.bashrcsoubor:for i v $HOME/.local/include/*;
udělejte zdroj $i
hotovoTo "importuje" jakýkoli soubor obsahující vlastní funkce v
~/.local/includedo prostředí vašeho shellu.Bash je jediný shell, který prohledává jak aktuální adresář, tak vaši
PATHkdyž použijete buďsourcenebo.příkaz.Použití zdroje pro open source
Pomocí
sourcenebo.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.bashrczvažte umístění souvisejících funkcí nebo skupin aliasů do vyhrazených souborů a poté použijtesourcek jejich požití.
Linux