Comment écrire un script shell qui s'exécute à la connexion?

16

J'essaie d'écrire un script shell bash dans la distribution Linux Ubuntu 11.10, qui sera exécuté automatiquement lors de la connexion au système. Mais je ne suis pas en mesure de comprendre que quoi écrire dans le script qui sera automatiquement exécuté lors de la connexion.

Dubex
la source

Réponses:

18

Si vous voulez qu'il soit global, modifiez

 /etc/profile 

ou ajoutez un script à

 /etc/profile.d

Si vous souhaitez qu'il soit spécifique à l'utilisateur, modifiez

 /home/$USER/.profile
wei2912
la source
1
N'oubliez pas que l'extension devrait l'être .shsi vous mettez votre script à l'intérieur de /etc/profile.d/. chmode +x /etc/profile.d/myscript.shbien sûr aussi.
Brian Haak
Raspbian Stretch. Essayer d'exécuter la /usr/local/bin/pihole -ccommande lors de la connexion automatique d'un utilisateur spécifique. Ajout de cette ligne à /home/$USER/.profile- rien ne se passe. Lorsque j'ajoute un script, /etc/profile.dcela fonctionne, mais il est global et s'exécute même lorsque j'ouvre une session ssh (ce qui n'est pas ce que je veux). L'ajout .bashrcfonctionne aussi, mais s'exécute à chaque fois que j'ouvre un nouveau shell (ce qui n'est pas ce que je veux). Question: Pourquoi ajouter à /home/$USER/.profilene fonctionnerait pas ???
Drew
3

Ajoutez simplement le script bash aux applications de démarrage.

Dans le champ de commande, entrez

bash /full/path/to/bash/script.sh/
jokerdino
la source
2
Comment ajoutez-vous "bash /.../script.sh" aux applications de démarrage à partir de la ligne de commande?
aleb
1
OP n'a jamais mentionné d'interface graphique; que faire s'ils sont sur un serveur distant via SSH et n'ont pas d' interface graphique? Aucune balise de bureau n'a été appliquée à la question ...
Doktor J
Le titre mentionne spécifiquement à la connexion et rien sur les interfaces graphiques de bureau.
RichieHH
0

Si vous voulez être plus spécifique à bash, vous pouvez également écrire votre code dans ~ / .bash_profile ou ~ / .bash_login.

Et vous pouvez y source n'importe quel script par exemple:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
Dieter.Wilhelm
la source
0

/etc/profileou $HOME/.profileou$HOME/.bash_profile

Je recommande fortement de ne pas l'utiliser /etc/profile.d/yourscript.shs'il produit une sortie. Lorsque vous utilisez une session non interactive, vous recevrez un $TERM is not setmessage. Ceci est visible lors de l'utilisation du protocole ssh, comme scp. Habituellement, ce n'est pas grave, cependant, Veeam n'aime pas cela et lancera un avertissement. Je sais que Veeam n'est pas le sujet ici, mais il convient de mentionner que toutes les applications n'ignoreront pas gracieusement l' $TERM is not setavertissement.

En bref, si le script génère une sortie, placez-le aux emplacements spécifiés sur la première ligne. Cependant, si vous modifiez l'environnement et que votre script ne génère pas de sortie, utilisez ce dernier.

Hickory420
la source