BASH-programmering

Bash-variabelen exporteren

Bash-variabelen exporteren
Het begrijpen van variabelen in de Bash-shell is essentieel om op een professionele manier met Linux te werken. Het is een van de belangrijkste vereisten voor programmeren en het behalen van de Linux Professional Institute Certification (LPIC) Level 1 [2].

Het eerder gepubliceerde artikel van Fahmida Yesmin [4] geeft je een prachtige introductie in Bash-variabelen. Hier gaan we verder, en leggen we uit hoe variabelen in Bash zo gedeclareerd kunnen worden dat je ze ook in andere omgevingen op je Linux systeem kunt gebruiken, en met welke neveneffecten je rekening moet houden.

Een korte beschrijving van Bash

De Bash-shell werd voor het eerst uitgebracht in 1989 en is gebruikt als de standaard login-shell voor de meeste Linux-distributies. Brian Fox schreef Bash als een UNIX-shell en commandotaal voor het GNU-project als gratis softwarevervanging voor de Bourne-shell. Het is een acroniem voor Bourne Again Shell. Bash is grotendeels compatibel met: sh en bevat handige functies van de Korn-shell ksh en de C-schaal csh [6].

Terwijl het GNU-besturingssysteem andere shells biedt, waaronder een versie van csh, Bash is de standaard interactieve shell. Het is ontworpen met het oog op draagbaarheid en werkt momenteel op bijna elke versie van UNIX plus andere besturingssystemen [9].

Bash-variabelen in een notendop

Variabelen zijn essentiële componenten van programmeertalen. Er wordt naar verwezen en er wordt naar ze gemanipuleerd in een computerprogramma. Simpel gezegd, variabelen vertegenwoordigen benoemde geheugencellen. Dit is hetzelfde in Bash als in elke programmeertaal. Dit maakt het voor ons als mens en gebruikers van de computer mogelijk om waarden op te slaan in het “brein” van de computer en deze terug te vinden via de toegewezen naam van de variabele.

De term variabele verwijst naar een gecombineerde vorm van twee woorden, i.e., variabel + staat, wat betekent dat de waarde kan worden gewijzigd en meerdere keren kan worden gebruikt. In tegenstelling hiermee worden variabelen die niet kunnen worden gewijzigd, constanten genoemd. [10]

Zolang er voldoende geheugen beschikbaar is voor je script, kun je vrijelijk variabelen maken en gebruiken. U kunt ze eenvoudig instellen door een variabelenaam te definiëren en vervolgens de waarde ervan toe te wijzen. Een variabelenaam in Bash kan letters, cijfers en onderstrepingstekens bevatten. De naam kan alleen beginnen met een letter en een onderstrepingsteken. Geldige variabelenamen zijn size, tax5 en _tax20 maar niet 5rules.

Een variabele waarde in Bash kan een getal, een enkel teken, een reeks tekens of een lijst met items bevatten (array genoemd). Het heeft geen zichtbaar gegevenstype en het interne gegevenstype van de variabele wordt automatisch berekend (of afgeleid) bij toewijzing van een waarde. Verder is het niet nodig om de variabele te declareren - het toewijzen van een waarde aan de referentie zal de variabele automatisch creëren. Het voorbeeld Bash-script hieronder demonstreert dit voor een tekenreekstoewijzing en een numerieke nummertoewijzing.

#! /bin/bash
welkomMessage = "Hallo wereld!"
echo $welcomeMessage
prijs = 145
echo $prijs

Naamgevingsconventies van bash-variabelen

Er zijn geen vaste regels voor de spelling van namen van variabelen, alleen conventies. Deze conventies worden gebruikt:

Voor wereldwijde IT-bedrijven is het gebruikelijk om met stijlgidsen te werken om te zorgen voor een gemeenschappelijke codeerstijl binnen het bedrijf. Zie het Developer Editorial for IBM en de Google Style Guide [3] voor meer informatie over de conventies die ze volgen.

Variabele zichtbaarheid

Het standaardgeval is dat een variabele lokaal is gebonden aan een structuur, functie, script of proces en niet van buitenaf kan worden benaderd. Het onderstaande voorbeeld laat dit zien voor de variabele $message die bij het script hoort, en $welcome die bij de functie outputWelcomeMessage().

#!/bin/bash
# definieer een variabele boodschap naar het script
message="Hallo, nogmaals!”
outputWelkomBericht ()
# definieer een lokale variabele
welkom = "Hallo!”
echo $welkom

outputWelcomeMessage () # prints Hallo!
echo $message # prints Hallo, nogmaals!

Om er zeker van te zijn dat een eerder gedefinieerde variabele met dezelfde naam lokaal gebonden is, gebruikt u het sleutelwoord local zoals hierna wordt aangetoond. Zonder het trefwoord local zou de toewijzing in regel 8 betrekking hebben op de globaal gedefinieerde variabele met dezelfde naam die eerder is gedefinieerd.

#!/bin/bash
# definieer een variabele boodschap naar het script
message="Hallo, nogmaals!”
outputWelkombericht ()
# definieer een lokale variabele met dezelfde naam
Lokaal bericht = "Hallo!”
echo $bericht

outputWelcomeMessage () # prints Hallo!
echo $message # prints Hallo, nogmaals!

Het bereik van een variabele uitbreiden

Om een ​​interne variabele zichtbaar te maken voor andere onderliggende processen is een extra stap nodig. Deze stap heet het exporteren van een variabele. Bash biedt het gebruik van de trefwoordexport gevolgd door de variabelenaam. De onderstaande lijst laat dit zien voor de variabele backupPath.

$ backupPath=”/opt/backup/”
$ back-uppad exporteren

Het exportcommando is een ingebouwde shell die wordt gebruikt om de variabele te definiëren als een die subshells (shells voortgebracht uit het origineel) erven. Variabelen die worden geëxporteerd, kunnen door meer dan één proces worden gelezen en geschreven.

De tweede optie is om de variabele vanaf het begin als een omgevingsvariabele te declareren. Dat doe je door het trefwoord declare te gebruiken gevolgd door de optie “-x” (zie [5] voor meer info over het declare commando). Het effect is vergelijkbaar met het exportcommando dat eerder werd geïntroduceerd.

$ declare -x BACKUPPATH=”/opt/backup/”

Erven van andere sessies

Wanneer u een programma uitvoert, erft het automatisch de omgevingsvariabelen van het bovenliggende proces. Als $HOME bijvoorbeeld is ingesteld op /root in de ouder, wordt de $HOME-variabele van het kind ook ingesteld op /root.

Verdere opdrachten

Linux wordt onder andere geleverd met handige commando's en opties die betrekking hebben op variabelen. De eerste twee heten env en printenv. Ze geven een lijst van alle omgevingsvariabelen.

De onderstaande afbeelding toont de uitvoer van de opdracht env in een terminal die wordt uitgevoerd in een X-sessie. Het bevat variabelen zoals $XTERM (terminaltype), $SHELL (het programma dat wordt aangeroepen bij het inloggen en /bin/bash toont voor het pad naar de Bash-interpreter), $LS_COLORS (de kleuren die worden gebruikt om verschillende bestanden te markeren typen bij het aanroepen van ls), en $DESKTOP_SESSION (de huidige X Desktop Environment).

De derde en de vierde zijn opties van het export commando - -p en -n. -p is een afkorting voor print en geeft alleen alle geëxporteerde variabelen in de huidige shell weer met behulp van de opdracht declare.

$ export -p
declareren -x DESKTOP_SESSION="xfce"
declareren -x DISPLAY=":0"
declareren -x GLADE_CATALOG_PATH=":"
declareren -x GLADE_MODULE_PATH=":"
declareren -x GLADE_PIXMAP_PATH=":"
declareren -x HOME="/home/frank"
declareren -x LANG="de_DE.UTF-8"

De optie -n wordt gebruikt om een ​​omgevingsvariabele uit te schakelen. De onderstaande lijst toont dit aan voor de eerder gedefinieerde variabele BACKUPPATH.

$ export -n BACKUPPATH

Conclusie

Bash is een heel slimme maar soms ook een beetje complexe omgeving. Variabelen bepalen hoe de verschillende tools op elkaar inwerken. Het exporteren van variabelen helpt bij de communicatie tussen processen en is gemakkelijk te gebruiken in het dagelijks leven.

Over de Auteurs

Jacqui Kabeta is een milieuactivist, fervent onderzoeker, trainer en mentor. In verschillende Afrikaanse landen heeft ze gewerkt in de IT-industrie en NGO-omgevingen.

Frank Hofmann is een IT-ontwikkelaar, trainer en auteur en werkt het liefst vanuit Berlijn, Genève en Kaapstad. Co-auteur van het Debian Package Management Book verkrijgbaar bij dpmb.org

Links en referenties

Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...
Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...