По сути, это сценарий оболочки, добавленный к какому-либо сжатому архиву, такому как архив tar. Вы используете команду tail
или sed
на себе (переменная $0
в оболочке Bourne), чтобы удалить сценарий оболочки спереди и передать остальное unarchiver.
Например, создайте следующий скрипт как self-extracting
:
#!/bin/sh -e
sed -e '1,/^exit$/d' "$0" | tar xzf - && ./project/Setup
exit
Команда sed
, приведенная выше, удаляет все строки от первой строки файла до первой, которая начинается с «exit», а затем пропускает остальные. Если то, что начинается сразу после строки «exit», является файлом tar, команда tar
извлечет его. Если это успешно, файл ./project/Setup
(предположительно извлеченный из архива) будет выполнен.
Тогда:
mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting
Теперь, если вы избавитесь от старого каталога project
, вы можете запустить self-extracting
, и он извлечет этот tar-файл и запустит скрипт установки.