в моем сценарии /etc/init.d/blabla, что является правильным способом определить, загружается ли система или пользователь root запускает сценарий?
Я думаю о * родительском pid * euid * terminal ... pts?
В традиционном init (не systemd) ваш скрипт будет иметь $0
как что-то вроде Sxxblabla
при запуске init, где xx
две цифры.
При запуске пользователем обычно устанавливается множество переменных среды, например USER
, HOME
и т.д., которые не устанавливаются при запуске из init.
Обратите внимание, что в целом вы хотите, чтобы эффект от запуска команды в оболочке и запуска команды при запуске был как можно более идентичным. В противном случае он может нормально выполнить проверку из командной строки, но при загрузке файл будет сохранен.