Я удивлен результатами, которые я вижу для поиска хорошо определенного и поддерживаемого Ubuntu «первой загрузки». Похоже, что у Red Hat / Fedora / CentOS толпа закрепилась на протяжении десятилетия. Ближайшим эквивалентом Ubuntu, похоже, является oem-config-firstboot.
Идея просто выполнить rm $0 будет работать. Но, технически есть какая-то интересная семантика. В отличие от большинства других интерпретаторов сценариев в Unix скрипт оболочки считывается и обрабатывается одной строкой / оператором за раз. Если вы отсоединили (rm) файл из-под него, то экземпляр оболочки, которая обрабатывает этот скрипт, теперь работает с анонимным файлом (любой файл, открытый, но несвязанный).
Рассмотрим выполните следующие действия:
#!/bin/bash
rm $0
echo "I've removed myself: $0"
ls -l $0
cat <
Если вы сохраните это на что-то вроде rmself.sh и (жесткой) ссылки на что-то вроде tst, тогда запуск ./tst должен показать что-то вроде этого как вывод: [ ! d4]
$ ./tst
I've removed myself: ./tst
ls: ./tst: No such file or directory
This is a test.
I'm still here, because the "here" doc is being fed to 'cat'
via the anonymous file through the open file descriptor.
But I cannot be re-exec'd
./tst: line 11: /home/jimd/bin/tst: No such file or directory
./tst: line 11: exec: /home/jimd/bin/tst: cannot execute: No such file or directory
Теперь есть некоторые нечетные возможные угловые случаи в отношении символических ссылок и случаи, когда скрипт был вызван как голый имя (принуждение оболочки к поиску $PATH для скрипта.
Но кажется, что bash (по крайней мере, в версии 3.2) добавляет $0 к пути, если он искал путь и в противном случае оставляет $ 0 установленным для любого относительного или абсолютного пути, используемого для вызова скрипта. Кажется, что самая чистая «firstboot» для Ubuntu - это создать небольшой пакет (.deb), содержащий скрипт, который будет помещен в [ f11] и сценарий после установки, который использует update-rc.d, чтобы связать это с уровнем выполнения 1 (/etc/rc1.d) (используя команду like: update-rc.d firstboot defaults) ... и затем последняя строка выполняет деактивацию или удаление с использованием чего-либо например: update-rc.d firstboot disable
Вот ссылка на oem-config-firstboot
Во-первых, лицензирование / drm не предотвращает пиратство. Если кто-то не уважает ваш IP-адрес, они найдут способ обойти ваш drm. К сожалению, это тот мир, в котором мы живем сегодня.
Говорят, что инфраструктура лицензионного ключа в MyApps проста. Причина в том, что существует множество способов управления drm и стандартного механизма для его реализации.
У нас есть разработчики, которые используют его для отправки по электронной почте ключа, который пользователь должен установить, и у нас есть разработчики, использующие его для загрузки ключ к определенному месту при установке / покупке приложения. Некоторым требуется ключ для любого использования приложения (приложение не работает без ключа), а некоторые разрешают ограниченное использование приложения без ключа и полного использования ключа.