Shar (Unix)
# Shar (Unix)

shar (un'abbreviazione di shell archive, "archivio a conchiglia"), nel sistema operativo Unix, è un formato archivio.

Un file shar è uno shell script, la cui esecuzione ricreerà i file. Si tratta di un tipo di file archivio autoestraibile. Può essere creato con la utility Unix shar. Per estrarre i file, di solito è richiesta solo la bourne shell standard Unix sh.

## Dettagli

Sebbene il formato shar abbia il vantaggio di essere plain text, ossia "testo semplice" in formato ASCII, pone un rischio legato al fatto di essere un file eseguibile; per questa ragione di solito si preferisce il più vecchio e generico formato di file tar anche per trasferire i file di testo. La GNU fornisce la propria versione di shar nella collezione GNU Sharutils.

Sono stati scritti programmi unshar per altri sistemi operativi, ma non sono sempre affidabili; i file shar sono shell scripts e possono fare teoricamente qualsiasi cosa che può fare uno shell script (compreso usare caratteristiche incompatibili di shell potenziate o dal funzionamento simile), limitando la loro utilità al di fuori del mondo Unix.

Lo svantaggio degli shell scripts autoestraibili (di qualsiasi tipo, non solo shar) è che fanno affidamento su una particolare implementazione dei programmi; gli archivi shell creati con versioni più vecchie di makeself, per esempio l'Unreal Tournament originale per il programma di installazione di Linux, non riesce a girare su bash 3.x a causa di un cambiamento nel modo in cui sono gestiti gli argomenti mancanti in un comando integrato di tipo trap.

## Formati simili

Nel 1987, Michael Bednarek de The Melbourne Institute of Applied Economic and Social Research presso l'Università di of Melbourne sviluppò uno script per uno scopo simile nel DIGITAL Command Language per il sistema operativo VMS sotto il nome "VMS_Shar version 2".

Lo scopo principale di questo script era di permettere la distribuzione del codice formattato dei programmi attraverso l'e-mail e i gruppi di discussione tra utenti perché:

* il software per i server di posta e NNTP ammetteva soltanto caratteri stampabili ASCII (32–126);
* tendevano ad eliminare gli spazi vuoti di riga (leading blanks) e di colonna (trailing blank) e i caratteri TAB;
* e di solito rompevano le righe più lunghe di 80 caratteri. VMS_SHAR proteggeva gli spazi vuoti d'intelineea, e spezzava i file lunghi in parti di meno di 16.000 byte.

La versione 4 introdusse la protezione degli spazi vuoti di colonna usando l'editor di testo TPU che divenne poi il principale motore dello script. La versione 5 protesse i caratteri di controllo come TAB, ESC, BEL. Nel 1988, a cominciare dalla versione 6, lo script fu poi esteso da James A. Gray della Xerox. A partire dalla versione 7, Andy Harper del King's College London continuò lo sviluppo. L'attuale versione (al 2008) è la 8.5 (1994).

