Пути LIB могут быть установлены в rc.local? Это выполняет свои команды после того, как мы войдем в систему?

  1. rc.local выполняет свои команды после того, как мы войдем в систему?

  2. Так как rc.local выполняет свои команды после того, как многопользовательский runlevel завершается, это также означает, что мы можем/должны установленные пути LIB в нем вместо того, чтобы установить их в .bashrc?

3
задан 29 April 2017 в 17:09

1 ответ

Сценарий /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 документация сначала.)

2
ответ дан 1 December 2019 в 16:55

Другие вопросы по тегам:

Похожие вопросы: