rc.local выполняет свои команды после того, как мы войдем в систему?
Так как rc.local выполняет свои команды после того, как многопользовательский runlevel завершается, это также означает, что мы можем/должны установленные пути LIB в нем вместо того, чтобы установить их в .bashrc?
Сценарий /etc/rc.local
вызывается в конце запуска нормальной системы. Это выполняется как root
и не имеет никаких отношений вообще с пользователем, входящим в систему. Любые присвоения переменной среды в /etc/rc.local
доступны только процессам, запущенным /etc/rc.local
; они не доступны процессам, запущенным на сессии входа в систему пользователя.
/etc/rc.local
не оказывает прямого влияния на сессию входа в систему пользователя. Это обычно используется, чтобы смонтировать некоторые диски, запустить некоторые сервисы и другие такие задачи. Это не может использоваться для установки среды пользователя.
Во-первых, давайте изучим /etc/rc.local
самостоятельно:
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
rc.local
старая функция подобной Unix системы, более старой даже, чем система инициализации System V (тот, который использовал каталоги /etc/rc[0-6S].d
). Используются недавние системы Ubuntu systemd
управлять инициализацией; /etc/rc.local
вызывается systemd
единица rc-local.service
:
$ sudo systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (exited) since Fri 2017-04-28 17:44:18 EEST; 2 days ago
Apr 28 17:44:18 factissa systemd[1]: Starting /etc/rc.local Compatibility...
Apr 28 17:44:18 factissa systemd[1]: Started /etc/rc.local Compatibility.
Единица автоматически сгенерирована при начальной загрузке если файл /etc/rc.local
существует и установлен по умолчанию быть вызванным после достижения network.target
; на Debian и производных, таких как Ubuntu, общедоступный конфигурационный файл изменяет это так, чтобы за единицей бежали network-online.target
.
Это не точно то же как традиционное место /etc/rc.local
в конце многопользовательской runlevel инициализации, но это достаточно подобно так, чтобы в большинстве случаев никакие корректировки не были сделаны. (Изучите те файлы, они - текст и довольно понятный; сделать модификации чтением systemd
документация сначала.)