A Bash egy rendszerbe ágyazott nyelv. Éppen ezért a futtatható kód jelkészlete mindig az éppen aktuális rendszer jelkészlete. Mivel az azonosítók leírására speciális szabályok vonatkoznak, így maximum a program kimenetének karakterkódolásával adódhat problémánk, a futásával azonban nem.
A Bash különbséget tesz kis és nagy betű között, erre az azonosítók létrehozásánál különösképpen figyelni kell, ugyanis észre vehetetlen hibák származhatnak belőle.
A nyelv 3 fajta változót különböztet meg: globális (környezeti), lokális és felhasználó által definiált.
Globális vagy másnevén környezeti változók nevei csupa nagybetűsek. Ezeket env vagy printenv utasításokkal jeleníthetjük meg. Ezek az utasítások az sh-utils csomag részei.
Lokális változók kizárólag az aktuális shell-ben érhetőek el. A set beépített utasítás (mindenféle paraméter nélkül) az összes változót megjeleníti (beleértve a környezeti változókat). A kimenet az aktuális lokalizáció szerint lesz sorrendezve egy újrafelhasználható formában.
Felhasználó által definiált változókat szokás a fentiektől eltérően csupa kisbetűvel írni. Ez azonban csak ajánlás használhatunk kis és nagy betűket vegyesen. Változók nevei tartalmazhatnak számokat, de nem kezdődhetnek számmal.
Nem tartalmazhatnak egyéb karaktert betűk, számok és aláhúzáson kívül, valamint nem kezdődhetnek számmal. Ha érvénytelen függvénynevet delarálunk fatal error hibát kapunk „non-interactive” shell-ben.
Az idéző jel mentes '\' jel a Bash-ben az escape karakter, tehát az új sor kivételével megörzi az utána lévő karakter literális értékét. Ha a \newline –t használunk, és a backslash maga nem idézőjelek között szerepel, a \newline sorfolytatást jelent.
Szimpla idézőjelek közé tett karakterek (''') megőrzik literál értéküket. A szimpla idézőjel nem jelenik meg a szimpla idézőjelek között, ha csak nem használunk előtte escape karaktert.
Dupla idézőjelek közé tett karakterek ("'") mindegyike megőrzi literál értékét a '$', '`', '\' karakterek kivételével. Tehát a '$' és '`' karakterek megőrzik eredeti jelentésüket. A '\'csak akkor őrzi meg eredeti jelentését ha a következő karakterek valamelyike követi: '$', '`', '"', '\', vagy newline. Dupla időzőjelek közé tett backlash-t tehát ha a fenti karakterek valamelyike követ, akkor az nem jelenik meg a szövegben. A dupla idéző jelek között dupla idézőjelet csak escape karakter segítségével tehetünk be.
Lehetőség nyílik speciális vezérlő karakterek beillesztésére is. Ezek rendszerint a konzolnak jelentenek plusz információt. Felsorolunk pár ilyen speciális karaktert. Ezek mindegyike escape karakterrel kezdődik.
A dupla idézőjelek közé tett dollár jel ('$') azt eredményezi, hogy a string lokálisra fordul le (tehát az éppen aktuális nyelvre). Ha a jelenlegi lokális C vagy POSIX, a dollár jel nem kerül értelmezésre.
Egyes rendszerek az LC_MESSAGES válozó által tárolt katalógusokat használják a fordításhoz. Mások a TEXTDOMAIN shell változó tartalma alapján generálnak katalógust. Ha a TEXTDOMAIN változót használjuk, akkor be kell állítani a TEXTDOMAINDIR változót oda ahol a katalógus fájlunk található és '.mo' végződéssel kell ellátni a filet. Pl.: TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo.
Lehetőségünk van a scriptjeinknek kezdeti paramétereket átadni. Ezt úgy tehetjük meg, hogy indításkor a script neve után szókzzel elválasztva felsoroljuk a paramétereket. Ezeket a paramétereket a scriptben a $ jel valamint a paraméter sorszámának leírásával tudjuk elérni az átadás sorrendjében, tehát a $1, $2,…, $n rendre az 1, 2,…, n-edik kapott paraméter (a paraméterek számozása 1-el kezdődik).
Az argumentumokat elérhetjük egy speciális módon is a args=("$@") egy tömböt hoz létre, az argumentumokról. Erről bővebben a típus fejezetben olvashatunk.
Az úgynevezett „non-interactive” shell-ben vagy egy „interactive shell”-ben - ahol az interactive_comments opció engedélyezve van – ha egy sorban '#' karakter van akkor a '#' után lévő összes karaktert a sorban az értelmező figyelmen kívül hagyja. Ha a fent említett opció nincs engedélyezve, akkor a '#' karakter nem kerül értelmezésre. Ez a beállítás alapértelmezettként be van állítva, tehát a kommenteket használhatjuk, azonban kikapcsolhatóak.