shar
— create a
shell archive of files
shar
is obsolete and may not be present in
FreeBSD 15 and later. Because shell archives are
simultaneously data and code and are typically interpreted by
sh(1), they
can easily be trojan-horsed and pose a significant security risk to users.
The tar(1)
utility can still produce shar encodings of files if needed. The
sysutils/freebsd-shar port has been created to
maintain this version of shar
past its deprecation
in base.
The shar
command writes a
sh(1) shell
script to the standard output which will recreate the file hierarchy
specified by the command line operands. Directories will be recreated and
must be specified before the files they contain (the
find(1)
utility does this correctly).
The shar
command is normally used for
distributing files by
ftp(1) or
mail(1).
To create a shell archive of the program
ls(1) and
mail it to Rick:
cd ls
shar `find . -print` | mail -s "ls source" rick
To recreate the program directory:
mkdir ls
cd ls
...
<delete header lines and examine mailed archive>
...
sh archive
The shar
command appeared in
4.4BSD.
The shar
command makes no provisions for
special types of files or files containing magic characters. The
shar
command cannot handle files without a newline
('\n') as the last character.
It is easy to insert trojan horses into
shar
files. It is strongly recommended that all
shell archive files be examined before running them through
sh(1).
Archives produced using this implementation of shar
may be easily examined with the command:
egrep -av '^[X#]' shar.file