Warning: Cannot assign an empty string to a string offset in /membri/recruitingservices71roma/wp-includes/class.wp-scripts.php on line 492
La shell | ICT Officine Informatiche
Crea sito
La shell, è sicuramente uno dei programmi più significativi del sistema in quanto esso permette l'interfacciamento e il dialogo tra utente e sistema. Attraverso la shell è possibile impartire i comandi al sistema. Essa, viene anche utilizzata come ambiente di programmazione dai sistemisti UNIX attraverso script shell ossia file di testo che contengono comandi di sistema definiti all'interno di una procedura.

 

La shell e il terminale

Quando si parla di Linux, ancora oggi, si parla di shell.

Perchè è la shell dove Linux esprime tutta la sua potenza, soprattutto nei confronti dei sistemi operativi commerciali, Windows compreso, e racchiude tutta la sua storia, mostrando, qua e là, le tracce dell’antica e solida filosofia Unix. Per un utente medio di Windows, la shell, probabilmente, è, ancora oggi, un oggetto sconosciuto.

Eppure, anche Windows, ancora oggi, conserva una shell, che viene chiamata: “emulatore di DOS” oppure “emulatore di terminale”. E’ una finestra nera, in cui l’utente può inserire alcuni comandi, per chiedere al sistema operativo di eseguire alcuni programmi. Mentre la storia di Windows è una rincorsa continua ad un’interfaccia grafica ( GUI ) sempre più sofisticata, grazie alla quale l’utente possa interagire con i programmi, senza porsi troppe domande ( ambiente Desktop ), la storia di Linux è una storia, fondamentalmente, di shell.

Naturalmente, Linux possiede più di un desktop ( interfaccia grafica ) da offrire ai suoi utenti, così da rendere la vita facile anche ai nuovi arrivati, abituati esclusivamente all’ambiente grafico di Windows.

E un utente può benissimo sopravvivere, anche in ambiente Linux, senza mai aprire una finestra di shell. Ma, nel momento in cui un utente decidesse di voler comprendere il reale funzionamento della macchina sulla quale opera, non esiste al mondo un sistema operativo così ricco di comandi e di possibilità, quale Linux. Non solo: se avete un sito web, installato su un qualche server nel mondo, è altamente probabile ( ed auspicabile ) che quel server sia gestito da un sistema operativo GNU/Linux.

In questo caso, sarebbe davvero auspicabile che voi interagiate con il vostro server, utilizzando la shell. In Unix e Linux, la shell è un semplice programma. Ciò che rende la shell un programma un po’ speciale è che la shell è il programma che interpreta tutti i comandi che inserite nella finestra del terminale, esegue tutti i programmi che, attraverso la riga di comandi, avete richiesto di eseguire e, normalmente, coordina quello che avviene tra voi ed il sistema operativo ( kernel ). La shell viene eseguita all’interno di una finestra terminale. Per aprire un terminale, da un’interfaccia grafica, dovreste trovare un menù “Terminale” in uno dei menù della finestra principale. Per esempio, in Xubuntu, il terminale si trova in:


Applicazioni
Accessori
Terminale

Questo tipo di shell viene chiamata “shell interattiva non di login”, poichè il login utente è stato già eseguito al momento dell’accesso al desktop ( GUI: Graphical User Interface ). In alternativa alla “shell interattiva non di login”, è possibile premere i tasti CTRL+ALT+F1 per aprire il terminale ( CTRL+ALT+F2 per aprirne un secondo, e così via ) e CTRL+ALT+F7 ( o CTRL+ALT+F8 ), per chiuderlo. Attenzione: con questo secondo metodo, il terminale sostituirà interamente l’interfaccia grafica, simulando alla perfezione il processo di accesso al sistema di shell, compreso il processo di autenticazione ( login e password ). In questo caso, abbiamo una “shell di login interattiva”: il solo modo per tornare all’ambiente grafico sarà: chiudere il programma di shell:


exit

e chiudere il terminale: CTRL+ALT+F7. Se volete aprire una shell sul vostro server remoto, invece, è necessario utilizzare un programma che permetta di aprire una shell in remoto, quali SSH ( Secure Shell ) o Telnet. Il programma SSH sarebbe preferibile, visto che permette la cifratura dei dati. Ma, attenzione: per potersi connettere ad un server tramite SSH o Telnet, è necessario essere abilitati.

Se il vostro sito web è installato su un server condiviso da decine o centinaia di altri utenti, come nel caso dei servizi di hosting, è molto probabile che voi non abbiate l’abilitazione all’utilizzo di questi comandi. In questo caso, solitamente, il solo protocollo che siete abilitati ad utilizzare è FTP, che, come dice il nome stesso, File Transfer Protocol, permette il semplice trasferimento ( invio e ricezione ) di file, senza alcuna possibilità di inviare comandi al vostro server Una volta, il terminale era un apparato fisico ( composto da un monitor ed una tastiera ) che accettava l’input dell’utente, lo inviava ad un computer remoto ( host ) e stampava a video ( monitor ) i dati ricevuti dal computer host. Si chiamava TTY ( TeleTYpewriter ) ed inviava i suoi dati ad un modem, che utilizzava, come mezzo di trasporto, una linea telefonica. Un modem trasmette i dati in modalità seriale, un bit alla volta.

Ecco perchè, nel tempo, il termine TTY venne assegnato anche a tutte quelle periferiche che utilizzano la stessa modalità seriale di trasmissione. Erano gli anni in cui non esistevano i personal computer ed il solo modo di accedere alle capacità computazionali di un computer era collegarsi ad esso via terminale. Ad uno stesso computer venivano collegati più terminali: uno per ciascun utente connesso. Ciascun terminale era collegato al computer centrale attraverso una porta seriale. A ciascuna porta seriale veniva assegnato un nome ed un numero:


ttyS0
ttyS1
ttyS2
...

La porta ttyS0 corrisponde alla porta seriale COM1 di DOS o Windows, mentre la porta ttyS1 corrisponde alla porta COM2. Quando un computer host veniva acceso, eseguiva un programma chiamato “getty” ( GET TTY ) che, a sua volta, eseguiva il programma “login”, per permettere all’utente di accedere al sistema remoto. Ciascun terminale fisico connesso al computer host doveva avere il suo processo “getty” aperto. Una volta entrati nel sistema host, era possibile digitare un testo o un comando, utilizzando la tastiera del terminale: le lettere digitate venivano inviate al computer host, il quale le reinviava ( echo ) immediatamente allo schermo del terminale ( Full Duplex Mode ).

Nel caso di un comando, il computer host inviava al terminale l’output generato dall’esecuzione del comando. Oggi, visto che non ha più senso parlare di terminali fisici, questi ultimi sono stati sostituiti dai terminali virtuali ( pseudo terminale ), software che simulano le operazioni che, una volta, venivano svolte dai TTY fisici. Uno pseudo terminale, quindi, viene generato e gestito da un software emulatore di terminale, senza essere connesso ad alcuna porta seriale, né ad alcuna periferica reale ( terminale ).

Per sapere quale emulatore di terminale è in esecuzione nel vostro sistema, stampate a video il contenuto della variabile d’ambiente TERM:


echo $TERM

Uno pseudo terminale è composto da una coppia di periferiche virtuali, che rappresentano il terminale utente reale ( slave ) e l’host al quale il terminale è connesso ( master ). Tutto ciò che viene scritto sul master viene inviato al processo associato allo slave, proprio come se lo slave fosse un terminale. Allo stesso tempo, tutto ciò che viene scritto nello slave viene inviato al processo associato al master. Gli pseudo terminali vengono usati da applicazioni quali i programmi di accesso remoto al sistema, ssh(1)rlogin(1)telnet(1) e dagli emulatori di terminale. Per inviare un messaggio testuale ad un terminale ( reale o virtuale ), è sufficiente reindirizzare l’output di un qualche comando alla periferica ( reale o virtuale ) appropriata. Se si ha a che fare con un terminale reale ( tty ):


echo test > /dev/ttyS1

Se, invece, si ha a che fare con un terminale virtuale:


echo test 1>/dev/pts/1

Per sapere quale terminale ( o pseudo terminale ) è in uso, eseguire:


tty

La shell è un programma e, come per tutti i programmi, è possibile reperirne diverse versioni. E’ possibile che tra una shell e l’altra esista una qualche differenza, anche se la gran parte dei comandi GNU/Linux dovrebbero essere comuni a tutte le shell. Quale shell carica, di default, il vostro sistema? Per saperlo, leggete il valore di una delle due variabili $0 ( zero ) o $SHELL:


echo $0
echo $SHELL

E’ molto probabile che i valori restituiti da questi comandi siano:


bash
/bin/bash

Questo perchè bash o Bourne Again Shell è la shell GNU standard. A proposito: il comando echo fa quello che dice: ripete ( echoes ) quello che riceve come input. Ma, torniamo alla nostra shell. Quante shell esistono in Linux? Per saperlo, possiamo leggere ( cat ) il file shells, nella cartella etc:


cat /etc/shells

/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
/bin/dash

Come sa, il sistema, quale shell caricare? Quando un utente entra nel sistema, esegue il login, inviando al sistema il proprio username ( e la password ). Il sistema verifica che username e password siano corretti, andando a leggere il file:


/etc/passwd

In questo file, sono memorizzati tutti gli utenti presenti nel sistema e, per ciascuno di essi, è riportata la shell di default abbinata. Per esempio:


mulo:x:504:504:mulo,,,:/home/mulo:/bin/bash

Avete bisogno di caricare, momentaneamente, una shell diversa da bash? Per esempio, dash? Lanciatela, da shell, come uno dei tanti comandi, scegliendo una delle due sintassi:


dash
/bin/dash

Entrambi questi comandi, lanciano una shell dash. O meglio: una subshell, cioè una shell dash, eseguita come processo figlio della shell bash. Ma, ricordate: da questo momento, state conversando con una shell dash, non più bash. Non innervositevi se, inserendo un comando che state leggendo dalla guida bash, non riuscite a farlo eseguire. Ora siete in dash! Per chiudere la shell dash e tornare alla shell bash, digitate:


exit

Condividi l'articolo ?
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
×

Benvenuto !

Fai clic su uno dei nostri specialisti elencati di seguito per avviare una chat di supporto su WhatsApp o inviaci un'e-mail a helpdesk [email protected]

You are Wellcome !

Click one of our helpdesk specialist below to start a chat on WhatsApp or send us an email to [email protected]

 

× HELPDESK