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
hotovoTo "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žijtesource
k jejich požití.
Linux