Jak automatycznie wykonać skrypt powłoki podczas logowania do Ubuntu

15

Jak uzyskać skrypt uruchamiający się automatycznie po zalogowaniu? Nie podczas uruchamiania komputera i nie dla wszystkich użytkowników, ale tylko wtedy, gdy ja (lub dowolny konkretny użytkownik ze skryptem) loguję się za pomocą interfejsu GNOME.

Po przeczytaniu gdzie indziej pomyślałem, że jest .bash_profilew moim katalogu domowym, ale dla mnie to nie ma żadnego efektu. Kiedy ręcznie wykonuję go w oknie terminala, wpisując ~/.bash_profile, działa, ale nie uruchomi się automatycznie po zalogowaniu.

Używam Ubuntu 11.04. Licencja na mój plik .bash_profile to-rwx------ . W moim katalogu domowym nie było pliku .bash_profile, zanim go utworzyłem.

Wydaje mi się, że pamiętam starsze wersje Linuksa, które mają .profileplik dla każdego użytkownika, ale to też nie działa.

Jak to jest zrobione? Czy muszę skonfigurować coś innego, aby plik .bash_profile działał? Czy może skrypt logowania dla użytkownika musi znajdować się w innym pliku?

Mike Rowave
źródło
.bash_profile, .profile i .bashrc (który jest faktycznie używany przez ubuntu) są ładowane za każdym razem, gdy otwierasz terminal bash. Więc właściwie nie jestem pewien, czy zostaną załadowane, jeśli zalogujesz się do GDM.
Juan Sebastian Totero
Publikowanie wersji Ubuntu może pomóc. W Ubuntu 10.10 .bashrc „działa dla mnie (TM)”.
Vlueboy
Masz na myśli, kiedy logujesz się do GUI lub do powłoki?
Flimzy,
bash ładuje je po uruchomieniu nowej powłoki, więc zostaną załadowane tylko po otwarciu okna terminala lub zalogowaniu się do wirtualnego terminala, a nie podczas logowania do Gnome (GDM).
shiftycow
Używam Ubuntu 11.04, jak wspomniałem w pierwotnym pytaniu.
Mike Rowave,

Odpowiedzi:

11

Możesz po prostu dodać następujące polecenie do System> Preferencje> Aplikacje startowe:

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

To powinno załatwić sprawę;)

Juan Sebastian Totero
źródło
Wiesz co, robiłem to wcześniej i to nie działało ... poza tym, że nie napisałem „bash” przed ścieżką skryptu! Spróbuję później z batem. Z ciekawości, kiedy wpisujesz coś za pomocą GUI w aplikacjach startowych, w którym pliku jest to zarejestrowane?
Mike Rowave
Programy startowe należy zarejestrować w/etc/xdg/autostart
shiftycow,
Działa dodawanie bash /home/myusername/scriptnamedo „aplikacji startowych”! Dzięki. Jednak może to być specyficzne dla GNOME na Ubuntu, dlatego zastanawiałem się, gdzie są zarejestrowane wpisy w tej pozycji menu „Aplikacje startowe”, ponieważ w innych współczesnych wersjach systemu Linux byłoby to bardziej podobne.
Mike Rowave,
2
/etc/xdg/autostartwydaje się być plikiem systemowym, niepowiązanym z użytkownikiem.
Mike Rowave,
Późniejsze wersje ubuntu znajdują się na askubuntu.com/questions/159887/…
TooTone
8

Zasadniczo, zgodnie z sugestią nodiscc , utwórz program uruchamiający pulpit: ~ / .config / autostart / script.desktop z następującą zawartością:

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

Następnie utwórz skrypt autostartu: ~ / bin / autostart z zawartością bash:

#!/bin/bash
# Execute bash script below

Upewnij się, że ~ / bin / autostart jest wykonywalny

Bert Regelink
źródło
5

Możesz dodać linię w crontab -

crontab -e

Następnie dodaj ten wiersz do pliku, który się otworzy:

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

Spowoduje to uruchomienie skryptu przy ponownym uruchomieniu. Aby uzyskać więcej informacji zobaczman crontab

inLoveWithPython
źródło
Nie wiem dlaczego, ale nie mogę wykonać plików .sh w „aplikacjach startowych”, dlatego najłatwiejszym sposobem na zrobienie tego teraz jest cron
Albert Català
1

Spróbuj ~/.xinitrc(kilka informacji tutaj: https://wiki.archlinux.org/index.php/Xinitrc ). Pamiętaj, że wszystko, co uruchomisz w tym skrypcie, powinno zostać uruchomione / uruchomione w tle lub może zakłócać logowanie do X.

Slartibartfast
źródło
-1

Rozszerzenie odpowiedzi @JuanSebastianTotero .

Zamiast:

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

Próbować

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

bashnie działało dla mnie na Ubuntu 13.04i 14.04. Ale shrobi.

Rahil Wazir
źródło