Як автоматично виконати скрипт оболонки під час входу в Ubuntu


15

Як мені отримати сценарій для автоматичного виконання під час входу? Не тоді, коли машина запускається, і не для всіх користувачів, а лише тоді, коли я (або будь-який конкретний користувач із сценарієм) входжу через інтерфейс GNOME.

Коли я читав в іншому місці, я думав, що це є .bash_profileв моєму домашньому довіднику, але для мене це не впливає. Коли я вручну виконую його у вікні терміналу, ввівши ~/.bash_profileйого, він працює, але він не запуститься автоматично під час входу.

Я запускаю Ubuntu 11.04. Дозвіл на файл у моєму .bash_profile є -rwx------. Ні, .bash_profile не існував у моєму домашньому каталозі до того, як я його створив сьогодні.

Здається, я пам’ятаю старіші версії Linux, які мають .profileфайл для кожного користувача, але це також не працює.

Як це робиться? Чи потрібно мені налаштувати щось інше, щоб змусити роботу .bash_profile? Або сценарій входу для кожного користувача повинен бути в якомусь іншому файлі?


.bash_profile, .profile і .bashrc (який фактично використовується ubuntu) завантажуються щоразу, коли ви відкриваєте bash-термінал. Тож насправді я не впевнений, що вони будуть завантажені, якщо ви просто увійдете в GDM.
Хуан Себастьян Тотеро

Опублікування вашої версії Ubuntu може допомогти. В Ubuntu 10.10 .bashrc "працює для мене (TM)."
Vlueboy

Ви маєте на увазі під час входу в графічний інтерфейс або в оболонку?
Flimzy

bash завантажує їх під час запуску нової оболонки, тому вони завантажуватимуться лише тоді, коли ви відкриєте вікно терміналу або увійдете у віртуальний термінал, а не тоді, коли ви ввійдете в Gnome (GDM).
shiftycow

Я використовую Ubuntu 11.04, як я вже згадував в оригінальному запитанні.
Майк Роуав

Відповіді:


11

Ви можете просто додати таку команду до системи> Налаштування> Запуск програм:

bash /full/path/to/your/script.sh

Це повинно зробити трюк;)


Ви знаєте що, я робив це раніше, і це не працювало ... за винятком того, що я не писав "баш" перед контуром сценарію! Я спробую це з басом пізніше. З цікавості, коли ви вводите щось через GUI в програми запуску, в якому файлі це зареєстровано?
Майк Роувв

Програми запуску повинні бути зареєстровані в/etc/xdg/autostart
shiftycow

Додавання bash /home/myusername/scriptnameдо "Запуск програм" працювало! Спасибі. Однак це може бути специфічно для GNOME на Ubuntu, тому мені було цікаво, де зареєстровані записи цього пункту меню «Запускаючі програми», оскільки це, швидше за все, буде подібним в інших сучасних версіях Linux.
Майк Роувв

2
/etc/xdg/autostartпредставляється загальносистемним файлом, не характерним для користувача.
Майк Роувв

Більш пізні версії ubuntu дивіться на askubuntu.com/questions/159887/…
TooTone

8

Отже, як запропонував nodiscc , створіть запуск робочого столу: ~ / .config / autostart / script.desktop із наступним вмістом:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

Потім створіть сценарій автозапуску: ~ / bin / autostart зі своїм вмістом bash:

#!/bin/bash
# Execute bash script below

Переконайтеся, що ~ / bin / autostart виконується


5

Ви можете додати рядок у crontab -

crontab -e

Потім додайте цей рядок у файл, який відкриється:

@reboot /path/to/your/cool/script

Це запустить сценарій при перезавантаженні. Детальніше дивman crontab


Я не знаю чому, але я не можу виконувати .sh файли під час "запуску програм", тому найпростіший спосіб зробити це зараз - це cron
Альберт Катала

1

Спробуйте ~/.xinitrc(трохи інформації тут: https://wiki.archlinux.org/index.php/Xinitrc ). Пам'ятайте, що все, що ви починаєте з цього сценарію, слід починати / запускати у фоновому режимі, інакше це може заважати логіну X.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.