11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.1. L’INTERFACCIA A LINEA DI COMANDO. 57La caratteristica delle variabili di shell è che una volta definite è possibile recuperarne ilvalore precedendone il nome con il carattere “$”, così se nella variabile MAIL mettete la directoryin cui si trova la vostra posta elettronica, potrete guardare il contenuto della directory con uncomando del tipo:[piccardi@gont piccardi]$ ls -l $MAIL-rw-rw---- 1 piccardi mail 4136 Aug 25 17:30 /var/mail/piccardiin genere cioè potrete utilizzare qualunque variabile in una linea di comando referenziandolaanteponendo un “$” al suo nome, in tal caso infatti la shell nell’eseguire la scansione della lineasostituirà automaticamente alla variabile il suo contenuto, e passerà questo come argomento (ocome opzione, a seconda del valore) al comando che viene eseguito.Si noti che mentre la shell provvede la sintassi e gli opportuni comandi interni per assegnare ecancellare la singola variabile, altrettanto non accade per la visualizzazione della stessa. Questoavviene perché questo compito può essere eseguito attraverso l’uso di uno dei tanti comandispecialistici della Unix toolbox. In particolare il comando da usare è echo, il cui solo compito èstampare in uscita la stringa (o le stringhe) che gli vengono passate come argomento: siccome lashell esegue automaticamente l’espansione delle variabili prima di passare gli argomenti ad uncomando, si potrà usare echo per leggere il contenuto di una variabile con una riga del tipo:piccardi@anarres:~/Truelite/documentazione/corso$ echo $USERpiccardidove la variabile USER viene prima espansa dalla shell nella stringa piccardi, dopo di chequest’ultima viene passata come argomento ad echo, che, come avrebbe fatto per una qualunquealtra stringa che potreste aver scritto direttamente sulla linea di comando, la stamperà a video.Il comando echo è uno dei più elementari e prende due sole opzioni. La prima è -n, che evitala stampa del carattere di a capo alla fine della stringa passata come argomento. Questa è utilequando si vuole costruire una riga con più invocazioni e la si usa in genere all’interno di unoscript (accenneremo agli script in sez. 2.1.6), dato che sul terminale si avrebbe l’interferenza daparte del prompt. La seconda opzione è -e che attiva l’interpretazione di una serie di caratterispeciali, la cui espressione, insieme a tutti gli altri dettagli relativi al comando, si trova nellarelativa pagina di manuale, accessibile con man echo.La bash definisce di suo (o utilizza qualora siano già definite) tutta una serie di variabili(come IFS, cha abbiamo già incontrato), che permettono sia di controllarne il funzionamentoche di accedere ad una serie di informazioni. Un elenco delle principali è riportato in tab. 2.2,l’elenco completo è descritto nella sezione Shell Variables della pagina di manuale.Una delle altre funzionalità che la shell fornisce con l’uso delle variabili, è quella dell’ambiente(in inglese environment), esso viene utilizzato per poter utilizzare il valore di alcune variabili dishell anche all’interno dei programmi che questa mette in esecuzione. 12 Non tutte le variabilidefinite nella shell sono però inserite nell’ambiente in quanto molte di esse (come PS1) sonodi interesse esclusivo della shell. Se si vuole inserire una variabile nell’ambiente lo si deve fareesplicitamente usando il comando interno export seguito dal nome della variabile, che deveessere già definita. 13 Lo stesso risultato si può ottenere con l’uso del comando interno declare,12 in sostanza quando un programma quando viene lanciato con la opportuna chiamata al sistema (l’argomentoè trattato nel capitolo due di [1]), deve ricevere una serie di informazioni da chi lo lancia; una parte di questeinformazioni sono gli argomenti, che vengono presi direttamente da quanto scritto nella riga di comando conil meccanismo illustrato in sez. 2.1.3, l’altra parte sono appunto le variabili di ambiente, che vengono definiteappunto nell’environment.13 la bash supporta anche la definizione della variabile nella stessa linea in cui viene esportata nell’ambiente,con una sintassi del tipo export VAR=val; questa però è una estensione che non è supportata da altre shell percui quando si scrivono script è il caso di evitare questa sintassi per mantenere la compatibilità.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!