Programmazione BASH

Esportazione delle variabili Bash

Esportazione delle variabili Bash
Comprendere le variabili nella shell Bash è essenziale per lavorare con Linux in modo professionale. È uno dei requisiti chiave per la programmazione e per il raggiungimento del livello 1 di certificazione del Linux Professional Institute (LPIC) [2].

L'articolo precedentemente pubblicato da Fahmida Yesmin [4] ti offre una meravigliosa introduzione alle variabili Bash. Qui andiamo oltre e spieghiamo come dichiarare le variabili in Bash in modo tale da poterle utilizzare in altri ambienti sul tuo sistema Linux e quali effetti collaterali corrispondenti devi prendere in considerazione.

Una breve descrizione di Bash

La shell Bash è stata rilasciata per la prima volta nel 1989 ed è stata utilizzata come shell di login predefinita per la maggior parte delle distribuzioni Linux. Brian Fox ha scritto Bash come shell UNIX e linguaggio di comando per il progetto GNU come sostituto del software gratuito per la shell Bourne. È un acronimo di Bourne Again Shell. Bash è ampiamente compatibile con sh e incorpora funzioni utili dalla shell Korn ksh e la shell C csh [6].

Mentre il sistema operativo GNU fornisce altre shell, inclusa una versione di csh, Bash è la shell interattiva predefinita. È progettato pensando alla portabilità e attualmente funziona su quasi tutte le versioni di UNIX più altri sistemi operativi [9].

Le variabili di Bash in poche parole

Le variabili sono componenti essenziali dei linguaggi di programmazione. Sono referenziati e manipolati in un programma per computer. In poche parole, le variabili rappresentano celle di memoria denominate. Questo è lo stesso in Bash come in qualsiasi linguaggio di programmazione. Ciò rende possibile a noi umani e utenti del computer di memorizzare valori nel "cervello" del computer e ritrovarli tramite il nome assegnato alla variabile.

Il termine variabile si riferisce a una forma combinata di due parole, i.e., variabile + in grado, il che significa che il suo valore può essere modificato e può essere utilizzato più volte. Al contrario, le variabili che non possono essere modificate sono chiamate costanti. [10]

Finché c'è abbastanza memoria disponibile per il tuo script puoi creare e usare liberamente le variabili. Puoi semplicemente impostarli definendo un nome di variabile e quindi assegnando il suo valore. Un nome di variabile in Bash può includere lettere, cifre e trattini bassi. Il suo nome può essere iniziato solo con una lettera e un carattere di sottolineatura. I nomi delle variabili validi sono size, tax5 e _tax20 ma non 5rules.

Un valore variabile in Bash può contenere un numero, un singolo carattere, una stringa di caratteri o un elenco di elementi (chiamato array). Non ha un tipo di dati visibile e il tipo di dati interno della variabile verrà automaticamente calcolato (o derivato) all'assegnazione di un valore. Inoltre, non è necessario dichiarare la variabile: l'assegnazione di un valore al suo riferimento creerà automaticamente la variabile. Lo script Bash di esempio di seguito lo dimostra per un'assegnazione di stringa e un'assegnazione di numeri numerici.

#! /bin/bash
welcomeMessage="Ciao mondo!"
echo $welcomeMessage
prezzo=145
echo $prezzo

Convenzioni di denominazione delle variabili Bash

Non ci sono regole fisse per l'ortografia dei nomi delle variabili, solo convenzioni. Vengono utilizzate queste convenzioni:

Per le aziende IT globali è comune lavorare con guide di stile per garantire uno stile di codifica comune all'interno dell'azienda. Consulta il Developer Editorial for IBM e la Google Style Guide [3] per ulteriori informazioni sulle convenzioni che seguono.

Visibilità variabile

Il caso predefinito è che una variabile è associata localmente a una struttura, una funzione, uno script o un processo e non è possibile accedervi dall'esterno. L'esempio seguente mostra questo per la variabile $message che appartiene allo script e $welcome che appartiene alla funzione outputWelcomeMessage().

#!/bin/bash
# definire un messaggio variabile per lo script
messaggio = "Ciao, di nuovo!"
outputWelcomeMessage ()
# definire una variabile locale
benvenuto=”Ciao!"
echo $benvenuto

outputWelcomeMessage () # stampa Hello!
echo $messaggio # stampa Ciao, di nuovo!

Per assicurarti che una variabile definita in precedenza con lo stesso nome sia associata localmente usa la parola chiave local come mostrato di seguito. Senza la parola chiave local l'assegnazione nella riga 8 riguarderebbe la variabile definita globalmente con lo stesso nome definito in precedenza.

#!/bin/bash
# definire un messaggio variabile per lo script
messaggio = "Ciao, di nuovo!"
outputWelcomeMessage ()
# definisce una variabile locale con lo stesso nome
Messaggio locale = "Ciao"!"
echo $messaggio

outputWelcomeMessage () # stampa Hello!
echo $messaggio # stampa Ciao, di nuovo!

Estendere l'ambito di una variabile

Per rendere visibile una variabile interna ad altri processi figlio è necessario un passaggio aggiuntivo. Questo passaggio si chiama esportare una variabile. Bash offre l'uso della parola chiave export seguita dal nome della variabile. L'elenco seguente lo dimostra per la variabile backupPath.

$ backupPath="/opt/backup/"
$ export backupPath

Il comando export è un built-in della shell che viene utilizzato per definire la variabile come una che eredita le subshell (shell generate dall'originale). Le variabili esportate possono essere lette e scritte da più di un processo, quindi.

La seconda opzione è dichiarare la variabile come variabile d'ambiente fin dall'inizio. Puoi farlo usando la parola chiave require seguita dall'opzione "-x" (vedi [5] per maggiori informazioni sul comando require). L'effetto è simile al comando di esportazione introdotto in precedenza introduced.

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

Eredita da altre sessioni

Quando esegui un programma, eredita automaticamente le sue variabili d'ambiente dal processo padre. Ad esempio, se $HOME è impostato su /root nel genitore, anche la variabile $HOME del bambino è impostata su /root.

Ulteriori comandi

Tra gli altri, Linux è dotato di utili comandi e opzioni relative alle variabili. I primi due si chiamano env e printenv. Elenca tutte le variabili d'ambiente.

L'immagine sotto mostra l'output del comando env in un terminale che viene eseguito in una sessione X. Contiene variabili come $XTERM (tipo di terminale), $SHELL (il programma che viene chiamato all'accesso e mostra /bin/bash per il percorso dell'interprete Bash), $LS_COLORS (i colori utilizzati per evidenziare file diversi quando si chiama ls) e $DESKTOP_SESSION (l'attuale ambiente desktop X).

La terza e la quarta sono opzioni del comando export - -p e -n. -p è l'abbreviazione di print e mostra solo tutte le variabili esportate nella shell corrente usando il comando require.

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

L'opzione -n ​​viene utilizzata per annullare l'impostazione di una variabile d'ambiente. L'elenco seguente lo dimostra per la variabile BACKUPPATH definita in precedenza.

$ export -n BACKUPPATH

Conclusione

Bash è un ambiente molto intelligente ma a volte anche un po' complesso. Le variabili controllano come interagiscono i diversi strumenti. L'esportazione delle variabili aiuta a comunicare tra i processi ed è facile da usare nella vita di tutti i giorni.

Riguardo agli Autori

Jacqui Kabeta è un ambientalista, avido ricercatore, formatore e mentore. In diversi paesi africani ha lavorato nel settore IT e negli ambienti delle ONG.

Frank Hofmann è uno sviluppatore IT, formatore e autore e preferisce lavorare a Berlino, Ginevra e Città del Capo. Coautore del libro sulla gestione dei pacchetti Debian disponibile da dpmb.organizzazione

Link e riferimenti

Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...
Come sviluppare un gioco su Linux
Un decennio fa, non molti utenti Linux avrebbero previsto che il loro sistema operativo preferito un giorno sarebbe diventato una piattaforma di gioco...
Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...