Вопрос или проблема
У меня есть простой sh-файл, который я хочу запускать при каждом входе в систему. Я пытался добавить его в приложения автозагрузки. Это не сработало. Я пытался отредактировать .desktop файл для приложения автозагрузки, установив Terminal=true. Это заставило его открыться временно, но затем он закрылся. Я пытался отредактировать .bashrc, добавив команду bash /path/to/my/file.sh, и это имело тот же эффект. Кажется, это должно быть действительно просто сделать, даже в Linux, но я перепробовал много способов и не добился успеха. Я использую Ubuntu 14.something.
Когда вы устанавливаете Terminal=true
в файле рабочего стола, окно терминала по умолчанию закрывается после “завершения работы”. Простое решение – изменить настройки вашего (терминального) профиля:
- откройте окно терминала, выберите Настройки профиля
- выберите “Заголовок & Команда” (по крайней мере, так это называется на голландском, вторая вкладка)
- в разделе “когда команда завершится” выберите “держать окно терминала открытым”
И конечно, как вы уже сделали, в файле рабочего стола установите Terminal=true
Решение для вопроса –> “У меня есть простой sh-файл, который я хочу запускать при каждом входе в систему. Я пытался добавить его в приложения автозагрузки.”
Предположим, путь к вашему файлу – /home/foster/Desktop/script.sh
Сначала сделайте его исполняемым с помощью:
$ chmod +x /home/foster/Desktop/script.sh
Теперь добавьте путь к скрипту в файл “/etc/rc.local” :
sh /home/foster/Desktop/script.sh
exit 0
Ответ или решение
Запуск .sh файла при авторизации пользователей в системе — это задача, которая может быть решена несколькими способами. Давайте разберем теоретическую основу, рассмотрим примеры и затем увидим, как применить эти решения на практике.
Теория
Когда речь идет о запуске скриптов при входе в систему, важно понимать механизмы автозагрузки и инициализации, которые специфичны для вашей операционной системы и ее версии. В Ubuntu 14.x, например, у вас есть несколько вариантов:
-
Использование файла
.bashrc
или.profile
— эти файлы загружаются при запуске сессии и могут содержать команды для выполнения. -
Использование
rc.local
— это скрипт, который запускается во время загрузки системы, однако он также может быть использован для выполнения действий при входе пользователя. -
Startup Applications — графическое средство в Ubuntu, позволяющее добавить команды или скрипты для выполнения при авторизации пользователя.
-
Создание
systemd
юнитов — более современный метод, применяемый в новых версиях Ubuntu, но может быть адаптирован для работы в старых системах с некоторыми модификациями.
Пример
1. Использование .bashrc
.bashrc
— это скрипт, который исполняется при запуске каждого нового терминального окна. Однако использование .bashrc
для запуска скриптов на авторизацию может быть не совсем корректным, так как этот файл исполняется при каждом запуске сессии Shell.
# в .bashrc
bash /path/to/my/file.sh
Этот подход может не сработать для скриптов без интерактивного пользовательского интерфейса или скриптов, которые требуют администрирования.
2. Использование rc.local
Файл /etc/rc.local
задуман для выполнения скриптов при завершении всех других инициализационных скриптов. Обратите внимание, что скрипт должен быть помимо всего исполняемым.
# в /etc/rc.local перед exit 0
sh /home/foster/Desktop/script.sh
exit 0
Не забудьте установить исполняемый флаг для файла:
chmod +x /home/foster/Desktop/script.sh
3. Startup Applications
Это графический метод и подходит для пользователей, которые предпочитают GUI. Вам необходимо создать .desktop
файл:
[Desktop Entry]
Type=Application
Exec=/home/foster/Desktop/script.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=My Script
Comment=This script runs on login
Terminal=true
И добавить его в "Startup Applications" через соответствующий интерфейс.
Применение
Теперь давайте рассмотрим более детально каждый из этих подходов и объясним, как они могут быть использованы на практике в различных сценариях:
-
Использование .bashrc подходит для команд, которые должны исполняться при каждом запуске нового терминального окна. Это удобно для установки переменных окружения или запуска небольших конфигурационных скриптов. Однако недостатком является то, что скрипт будет выполняться при каждой новой сессии Shell, что не всегда целесообразно.
-
Использование rc.local идеально для скриптов, которые должны быть выполнены после окончания процесса загрузки, до предоставления пользователю контроля. Это традиционный способ инициализации, который не требует непосредственного взаимодействия с пользователем. Однако, для многопользовательских систем, этот метод менее удобен, так как подразумевается выполнение только при старте системы.
-
Startup Applications удобен для запуска GUI приложений и скриптов при входе в среду рабочего стола. Это особенно полезно для скриптов, которые взаимодействуют с пользователем или должны быть запущены в контексте рабочего стола.
Заключение
Понимание и грамотное использование механизмов инициализации системы позволит вам успешно конфигурировать выполнение скриптов во время авторизации. Независимо от задачи, важно изучить специфику среды, в которой вы работаете (взять в учет версию ОС, требования к безопасности, необходимость взаимодействия с пользователем и так далее).
В любом из предложенных сценариев, всегда убедитесь, что ваш скрипт проверен на отсутствие критических ошибок, которые могут повлиять на стабильность системы. Экспериментируя с различными методами, вы сможете выбрать тот, который наилучшим образом соответствует вашему рабочему процессу и специфическим требованиям операционной системы.