Как запустить скрипт Bash при использовании графического входа в систему на рабочем столе

1178
Spenser Truex

Я использую рабочий стол MATE в Arch Linux, и у меня есть скрипт bash, который я запускаю, который:

  • Настраивает MATE для работы с несколькими мониторами
  • Подключает ПК к интернету
  • Меняет скорость мыши

Я должен вручную выполнить этот скрипт каждый раз, когда я вхожу в систему графически. Как я могу сделать это автоматически? Я пробовал следующее:

  • Положить сценарий в ~/.profileфайл. Ничего не случилось.
  • Положить сценарий в ~/.initrcфайл. Ничего не случилось.
  • Положить сценарий в ~/.xsessionфайл. Ничего не случилось.
  • systemd не будет работать, потому что, насколько я могу судить, он пытается выполнить функции скрипта слишком рано. Это должно быть выполнено только после того, как пользователь вошел в систему, а не во время запуска.

Изменить : Скрипт также требует привилегий root!

2
Я не запускаю mate - но что-то похожее на модуль автозапуска KDE может быть удобно. http://superuser.com/a/809799/10165 - это пример того, как я выполняю скрипт xrandr с помощью автозапуска. Мате может назвать это автозагрузкой приложений. У меня * нет * рабочего стола помощника, чтобы проверить его и опубликовать полный ответ, так что, если кто-то делает и хочет опубликовать ответ с этим, я крут. Journeyman Geek 7 лет назад 0
@JourneymanGeek Забавно, мой сценарий также выполняет те же команды `xrandr`, которые вы изложили в своем вопросе. Spenser Truex 7 лет назад 0
@JourneymanGeek После использования приложения автозапуска MATE мне жаль сообщать, что я должен вручную ввести пароль root при запуске. Spenser Truex 7 лет назад 0
Вы также можете дать права sudo для одной команды. Это может быть лучшей идеей. И так как это работает, отправьте это как ответ Journeyman Geek 7 лет назад 0

3 ответа на вопрос

1
Spenser Truex

Благодаря комментарию @JorneymanGeek я смог использовать приложение автозапуска MATE, чтобы делать то, что мне нужно. Я решил проблемы, связанные с необходимостью ввода пароля с помощью NOPASSWD visudo, что позволяет мне вызывать sudo COMMANDв командной строке без использования пароля.

Это вообще плохая идея, но она работает.

0
Satya Mishra

Вы можете иногда (не всегда) использовать ~/.xsessionдля достижения того, что вы хотите. Обычно это сильно зависит от системы, и вам, возможно, придется покопаться в скрипте запуска вашей системы. Пожалуйста, смотрите этот вопрос Unix & Linux Stack Exchange для более подробной информации.

К сожалению, ~ / .session не работает в моем случае. Spenser Truex 7 лет назад 0
@SpenserTruex Да, это не всегда работает. Просто чтобы подтвердить, имя файла `~ / .xsession` НЕ` ~ / .session`. Satya Mishra 7 лет назад 0
это `~ / .xsession`. Spenser Truex 7 лет назад 0
@SpenserTruex ОК. Я не пользователь Arch. После некоторой дополнительной обработки `~ / .xprofile`, похоже, [файл запуска сеанса] (https://wiki.archlinux.org/index.php/Xprofile), используемый большинством современных менеджеров отображения. Satya Mishra 7 лет назад 0
0
Matt

Вы могли бы поместить это в:

  • ~/.bashrc (будет запущен после инициализации всех приложений)
  • /etc/rc.local (будет запускаться как ROOT после запуска всех служб, но до входа в систему под своим именем пользователя)
Есть ли способ запустить `~ / .bashrc` от имени root, чтобы получить как преимущества, так и запуск после того, как приложения инициализировали * и * как root? Spenser Truex 7 лет назад 0
Также я попытался использовать rc.local, и он не дает никаких результатов. Spenser Truex 7 лет назад 0