Выполнение единожды Linux logon скрипта

by, Yevgeniy Goncharov, 20-Apr-2023
  • bash
  • linux
  • logon
  • скрипт

Запустить bash скрипт один раз при входе пользователя в систему можно используя несколько функциональных возможностей Linux:

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • /etc/profile.d

Скрипт можно разместить в каталоге /etc/profile.d в данном случае он исполнится для всех пользователей, для конкретного же пользователя, путь к скрипту можно указать в любом из файлов, в данном случае это будет ~/.profile.

Логика скрипта

Можно описать логику, которая по факту выполнения будет создавать файл, назовем его .once_done, скрипт при запуске будет проверять его наличие, если файла нет, будет выполнено действие.

#!/bin/bash
if [ -e $HOME/.once_done \]
then
 echo "No action for provisioning."
else
 echo "Run once is Done!" >> $HOME/run-once.txt
 touch $HOME/.once_done
fi

Код сохраним в файле provision.sh в каталоге пользователя, далее делаем скрипт исполняемым:

chmod +x provision.sh

Настройка .profile

Собственно это одна строчка, которую можно добавить в конец файла:

. ${HOME}/provision.sh

Проверка

Можно совершить выход из системы используя команду exit, после входа проверить наличие файла run-once.txt в каталоге пользователя, с содержимым "Run once is Done!":

run linux logon script once