En el sistema operativo Unix , shar (de "archivo shell") es un formato de archivo creado con la utilidad Unix . Un archivo shar es un tipo de archivo autoextraíble , porque es un script de shell válido y al ejecutarlo se recrearán los archivos. Para extraer los archivos, normalmente sólo se requiere el shell sh estándar de Unix Bourne .shar
Los archivos shar a veces también se denominan "sharchives" (de "/bin/sh archive"). [2]
Tenga en cuenta que el comando shar no está especificado en la Especificación única de Unix , por lo que formalmente no es un componente de Unix, sino una utilidad heredada.
Si bien el formato shar tiene la ventaja de ser texto plano , presenta un riesgo por ser ejecutable ; [3] por esta razón, el formato de archivo tar más antiguo y general suele ser el preferido incluso para transferir archivos de texto. GNU proporciona su propia versión de shar en la colección GNU Sharutils .
los programas para compartir se han escrito para otros sistemas operativos, pero no siempre son confiables; Los archivos shar son scripts de shell y, en teoría, pueden hacer cualquier cosa que un script de shell pueda hacer (incluido el uso de funciones incompatibles de shells mejorados o similares), lo que limita su utilidad fuera del mundo Unix.
El inconveniente de los scripts de shell autoextraíbles (de cualquier tipo, no sólo shar) es que pueden depender de una implementación particular de programas; Los archivos de shell creados con versiones anteriores de makeself , [4] por ejemplo, el instalador original de Unreal Tournament para Linux, no se ejecutan en bash 3.x debido a un cambio en la forma en que se manejan los argumentos faltantes en trap
el comando integrado .
A James Gosling se le atribuye haber escrito la primera versión de la utilidad shar en 1982, [1] : §1 y también escribió un ejemplo temprano (supuestamente 1978-79) del concepto en forma de este sencillo script de shell: [5] [ 6] [7]
# shar -- Archivador de Shell AR = cambio de $ 1 para hago echo a - $i echo "echo x - $i " >> $AR echo "cat > $i <<'!Funky!Stuff!'" >> $AR cat $i >> $AR echo "!¡Funky!¡Cosas!" >> $AR hecho
Se conocen las siguientes variantes de shar : [8]
GNU shar
está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos nativos Win32 de utilidades comunes similares a GNU Unix. [9]
Michael Bednarek del Instituto de Investigación Económica y Social Aplicada de Melbourne escribió en 1987 una versión del mismo concepto, pero para el sistema operativo VMS , como un script DCL , VMS_SHAR.COM. [10] Esto fue posteriormente mantenido y ampliado por James A. Gray de Xerox , [11] y Andy Harper del King's College de Londres . [12] [13]
makeself (2001–) es un script de shell que genera archivos comprimidos autoextraíbles ( *.run
, application/x-makeself
) utilizando la misma técnica de encabezado del script de shell. El uso de tar impide que se utilice directamente en texto plano, pero la mejor compresión y otras funcionalidades lo han hecho más popular en el siglo XXI entre los proveedores de software que buscan empaquetar software Linux. [14]