Comment exécuter automatiquement un script shell lors de la connexion à Ubuntu


15

Comment obtenir un script à exécuter automatiquement lorsque je me connecte? Pas au démarrage de la machine, et pas pour tous les utilisateurs, mais uniquement lorsque je (ou tout utilisateur spécifique avec le script) me connecte via l'interface utilisateur GNOME.

En lisant ailleurs, j'ai pensé que c'était .bash_profiledans mon répertoire personnel, mais pour moi, cela n'a aucun effet. Lorsque je l'exécute manuellement dans une fenêtre de terminal en tapant, ~/.bash_profilecela fonctionne, mais il ne s'exécute pas automatiquement lorsque je me connecte.

J'utilise Ubuntu 11.04. L'autorisation de fichier sur mon .bash_profile est -rwx------. Aucun .bash_profile n'existait dans mon répertoire personnel avant de le créer aujourd'hui.

Il me semble que les anciennes versions de Linux avaient un .profilefichier pour chaque utilisateur, mais cela ne fonctionne pas non plus.

Comment est-il fait? Dois-je configurer autre chose pour que le .bash_profile fonctionne? Ou le script de connexion par utilisateur doit-il figurer dans un autre fichier?


.bash_profile, .profile et .bashrc (qui est celui réellement utilisé par ubuntu) sont chargés à chaque fois que vous ouvrez un terminal bash. Donc, en fait, je ne suis pas sûr qu'ils seront chargés si vous vous connectez simplement à GDM.
Juan Sebastian Totero

La publication de votre version d'Ubuntu pourrait vous aider. Dans Ubuntu 10.10 .bashrc "fonctionne pour moi (TM)".
Vlueboy

Voulez-vous dire lorsque vous vous connectez à l'interface graphique ou au shell?
Flimzy

bash les charge lorsque vous démarrez un nouveau shell, ils ne seront donc chargés que lorsque vous ouvrirez une fenêtre de terminal ou vous connecterez à un terminal virtuel, pas lorsque vous vous connecterez à Gnome (GDM).
shiftycow

J'utilise Ubuntu 11.04, comme je l'ai mentionné dans la question d'origine.
Mike Rowave

Réponses:


11

Vous pouvez simplement ajouter la commande suivante dans Système> Préférences> Applications de démarrage:

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

Cela devrait faire l'affaire ;)


Tu sais quoi, j'ai fait ça avant et ça n'a pas marché ... sauf que je n'ai pas écrit "bash" avant le chemin du script! Je vais l'essayer avec le bash plus tard. Par curiosité, lorsque vous saisissez quelque chose via l'interface graphique dans les applications de démarrage, dans quel fichier est-il enregistré?
Mike Rowave

Les programmes de démarrage doivent être enregistrés dans/etc/xdg/autostart
shiftycow

L'ajout bash /home/myusername/scriptnameà "Applications de démarrage" a fonctionné! Merci. Cependant, cela peut être spécifique à GNOME sur Ubuntu, c'est pourquoi je me demandais où les entrées de cet élément de menu "Applications de démarrage" sont enregistrées, car cela serait plus susceptible d'être similaire dans d'autres versions modernes de Linux.
Mike Rowave

2
/etc/xdg/autostartsemble être un fichier à l'échelle du système, non spécifique à un utilisateur.
Mike Rowave

Pour les versions ultérieures d'ubuntu, voir askubuntu.com/questions/159887/…
TooTone

8

Donc, fondamentalement, comme l' a suggéré nodiscc , créez un lanceur de bureau: ~ / .config / autostart / script.desktop avec le contenu suivant:

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

Créez ensuite le script de démarrage automatique: ~ / bin / démarrage automatique avec votre contenu bash:

#!/bin/bash
# Execute bash script below

Assurez-vous que ~ / bin / autostart est exécutable


5

Vous pouvez ajouter une ligne dans crontab -

crontab -e

Ajoutez ensuite cette ligne au fichier qui s'ouvre:

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

Cela exécutera le script au redémarrage. Pour plus de détails, voirman crontab


Je ne sais pas pourquoi, mais je ne peux pas exécuter les fichiers .sh sur les "applications de démarrage", donc la façon la plus simple de le faire maintenant est cron
Albert Català


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.