Как запустить скрипт Bash при использовании графического входа в систему на рабочем столе
1207
Spenser Truex
Я использую рабочий стол MATE в Arch Linux, и у меня есть скрипт bash, который я запускаю, который:
Настраивает MATE для работы с несколькими мониторами
Подключает ПК к интернету
Меняет скорость мыши
Я должен вручную выполнить этот скрипт каждый раз, когда я вхожу в систему графически. Как я могу сделать это автоматически? Я пробовал следующее:
Положить сценарий в ~/.profileфайл. Ничего не случилось.
Положить сценарий в ~/.initrcфайл. Ничего не случилось.
Положить сценарий в ~/.xsessionфайл. Ничего не случилось.
systemd не будет работать, потому что, насколько я могу судить, он пытается выполнить функции скрипта слишком рано. Это должно быть выполнено только после того, как пользователь вошел в систему, а не во время запуска.
Изменить : Скрипт также требует привилегий root!
Я не запускаю mate - но что-то похожее на модуль автозапуска KDE может быть удобно. http://superuser.com/a/809799/10165 - это пример того, как я выполняю скрипт xrandr с помощью автозапуска. Мате может назвать это автозагрузкой приложений. У меня * нет * рабочего стола помощника, чтобы проверить его и опубликовать полный ответ, так что, если кто-то делает и хочет опубликовать ответ с этим, я крут.
Journeyman Geek 8 лет назад
0
@JourneymanGeek Забавно, мой сценарий также выполняет те же команды `xrandr`, которые вы изложили в своем вопросе.
Spenser Truex 8 лет назад
0
@JourneymanGeek После использования приложения автозапуска MATE мне жаль сообщать, что я должен вручную ввести пароль root при запуске.
Spenser Truex 8 лет назад
0
Вы также можете дать права sudo для одной команды. Это может быть лучшей идеей. И так как это работает, отправьте это как ответ
Journeyman Geek 8 лет назад
0
3 ответа на вопрос
1
Spenser Truex
Благодаря комментарию @JorneymanGeek я смог использовать приложение автозапуска MATE, чтобы делать то, что мне нужно. Я решил проблемы, связанные с необходимостью ввода пароля с помощью NOPASSWD visudo, что позволяет мне вызывать sudo COMMANDв командной строке без использования пароля.
Это вообще плохая идея, но она работает.
0
Satya Mishra
Вы можете иногда (не всегда) использовать ~/.xsessionдля достижения того, что вы хотите. Обычно это сильно зависит от системы, и вам, возможно, придется покопаться в скрипте запуска вашей системы. Пожалуйста, смотрите этот вопрос Unix & Linux Stack Exchange для более подробной информации.
К сожалению, ~ / .session не работает в моем случае.
Spenser Truex 8 лет назад
0
@SpenserTruex Да, это не всегда работает. Просто чтобы подтвердить, имя файла `~ / .xsession` НЕ` ~ / .session`.
Satya Mishra 8 лет назад
0
это `~ / .xsession`.
Spenser Truex 8 лет назад
0
@SpenserTruex ОК. Я не пользователь Arch. После некоторой дополнительной обработки `~ / .xprofile`, похоже, [файл запуска сеанса] (https://wiki.archlinux.org/index.php/Xprofile), используемый большинством современных менеджеров отображения.
Satya Mishra 8 лет назад
0
0
Matt
Вы могли бы поместить это в:
~/.bashrc (будет запущен после инициализации всех приложений)
/etc/rc.local (будет запускаться как ROOT после запуска всех служб, но до входа в систему под своим именем пользователя)
Есть ли способ запустить `~ / .bashrc` от имени root, чтобы получить как преимущества, так и запуск после того, как приложения инициализировали * и * как root?
Spenser Truex 8 лет назад
0
Также я попытался использовать rc.local, и он не дает никаких результатов.
Spenser Truex 8 лет назад
0