( locsemege | 2012. 01. 22., v – 14:27 )

A . vagy source lényegében include-olja az utána megnevezett file-t, s az eredeti shell hajtaj azt végre. A hashbang a source-ban nem számít, hiszen az komment lesz.

Külön shell már csak azért sem hajthatja végre, mert akkor az önálló process-ben futna, az önálló memóriaterületet foglalna, s akkor el is veszítenéd az ottani változókat. Különben lehet subshell-ben futtatni valamit, ehhez sima, gömbölyded zárójelbe kell tenni azt, amit subshell-ben futtatnál.

Gondold végig mi történik így:

valtozo=alma
echo szilva | read valtozo
echo "$valtozo" # azt fogja kiírni, hogy alma, s nem azt, hogy szilva

Ez ugye azért van, mert a pipe miatt önálló shellben, külön process-ben futott a read, s a kilépéskor fel is számolódott a memóriaterülete. A read utáni valtozo egy egészen másik shellben lett definiálva, aztán meg is lett szüntetve. A mi változónk továbbra is alma értékű. Erre érdemes figyelni, különben keresheted a hibát napestig egy script-ben.

Az initben a függvényeket csak be kell include-olni, hogy meg lehessen őket hívni, nem?

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE