Как автоматически выполнить скрипт оболочки при входе в 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 «работает на меня (ТМ)».
Vlueboy
Вы имеете в виду, когда вы входите в GUI или в оболочку?
Хлипкий
bash загружает их при запуске новой оболочки, поэтому они загружаются только при открытии окна терминала или входа в виртуальный терминал, а не при входе в Gnome (GDM).
shifttycow
Я использую Ubuntu 11.04, как я упоминал в оригинальном вопросе.
Майк Роуав

Ответы:

11

Вы можете просто добавить следующую команду в Система> Настройки> Запускаемые приложения:

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

Это должно делать свое дело ;)

Хуан Себастьян Тотеро
источник
Знаете что, я делал это раньше, и это не сработало ... за исключением того, что я не писал "bash" до пути сценария! Я попробую это с bash позже. Из любопытства, когда вы вводите что-то через графический интерфейс в Startup Applications, в каком файле это регистрируется?
Майк Роуав
Программы запуска должны быть зарегистрированы в/etc/xdg/autostart
shifttycow
Добавление bash /home/myusername/scriptnameв «Startup Applications» сработало! Благодарю. Однако это может быть характерно для GNOME в Ubuntu, поэтому мне было интересно узнать, где регистрируются записи в этом пункте меню «Startup Applications», так как в других современных версиях 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

inLoveWithPython
источник
Я не знаю почему, но я не могу выполнить файлы .sh в «запускаемых приложениях», поэтому самый простой способ сделать это сейчас - это cron
Альберт Катала
1

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

Слартибартфаст
источник
-1

Расширение ответа @JuanSebastianTotero .

Вместо того:

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

Пытаться

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

bashне работал для меня на Ubuntu 13.04и 14.04. Но shделает.

Рахиль Вазир
источник