#1 Le 24/01/2013, à 10:33
[Résolu] Comment lancer une commande bash au login
Bonjour
Je n'arrive pas à retrouver comment lancer un script bash après connection d'un utilisateur donné sur un serveur.
Ce sera un petit menu qui affiche des options, demande un choix et exécute une commande, ou revient au prompt.
Merci pour votre aide.
Dernière modification par tintinux (Le 25/01/2013, à 10:19)
Precise Pengolin sur mon portable professionnel (64 bits), celui de madame, et sur un serveur dédié hébergé.
Natty Narwhal sur 2 autres portables de la famille dont celui de ma maman qui, à 77 ans, n'a pas remarqué la différence avec MS-Windows !
Et toujours un Lucid Lynx sur un serveur à la maison
Sans Unity, trop peu ergonomique, remplacé par Mate .
Hors ligne
#2 Le 24/01/2013, à 13:23
Re : [Résolu] Comment lancer une commande bash au login
Bonjour,
Il suffit normalement d'ajouter la commande à lançer tout en bas d'un fichier caché nommé « .bashrc » dans le dossier personnel de l'utilisateur.
Louis
Hors ligne
#3 Le 24/01/2013, à 13:38
Re : [Résolu] Comment lancer une commande bash au login
Merci pour la réponse, mais j'ai essayé, sans succès.
Le fichier .bashrc n'existait pas dans mon dossier personnel, même en affichant les fichiers cachés bien sûr.
Je l'ai créé et lui ai donné droit d'exécution.
J'ai mis dedans :
#!/bin/bash
echo "bonjour !"Mais je ne vois rien s'afficher au login...
Qu'est ce qui cloche ?
Precise Pengolin sur mon portable professionnel (64 bits), celui de madame, et sur un serveur dédié hébergé.
Natty Narwhal sur 2 autres portables de la famille dont celui de ma maman qui, à 77 ans, n'a pas remarqué la différence avec MS-Windows !
Et toujours un Lucid Lynx sur un serveur à la maison
Sans Unity, trop peu ergonomique, remplacé par Mate .
Hors ligne
#4 Le 24/01/2013, à 16:23
Re : [Résolu] Comment lancer une commande bash au login
Mon fichier à moi n'est pas exécutable et il fonctionne... Quand j'ajoute :
echo "Bonjour"à la fin du fichier, il m'affiche bien « Bonjour ».
Est-ce que tu utilises bien Bash ? Essaye
echo $SHELLpour le vérifier.
Louis
NB:
Bash 4.2.37 sur Kubuntu 12.10.
Hors ligne
#5 Le 24/01/2013, à 16:38
Re : [Résolu] Comment lancer une commande bash au login
echo $SHELLme retourne /bin/sh
Que veut dire "J'utilise bash", ou comment fais-je pour l'utiliser ?
Mes scripts sont généralement écrits pour lui, avec la ligne #!/bin/bash pour commencer, et fonctionnent normalement une fois que je suis connecté.
Precise Pengolin sur mon portable professionnel (64 bits), celui de madame, et sur un serveur dédié hébergé.
Natty Narwhal sur 2 autres portables de la famille dont celui de ma maman qui, à 77 ans, n'a pas remarqué la différence avec MS-Windows !
Et toujours un Lucid Lynx sur un serveur à la maison
Sans Unity, trop peu ergonomique, remplacé par Mate .
Hors ligne
#6 Le 24/01/2013, à 16:54
Re : [Résolu] Comment lancer une commande bash au login
sh ne va pas chercher le même fichier que bash au démarrage (et je ne sais pas même s'il va en chercher un).
Il est possible que ton émulateur de terminal utilise un autre interpréteur. Va voir dans la configuration de celui-ci. S'il y a un endroit où il est indiqué « /bin/sh », modifie-le par « /bin/bash ».
Sinon, c'est que ton interpréteur par défaut est « mal » configuré. Pour en changer et utiliser bash, entre la commande
usermod -s /bin/bash TOINormalement, tous les utilisateurs utilisent Bash par défaut... tu as dû en changer par inadvertence.
Louis
Hors ligne
#7 Le 24/01/2013, à 17:21
Re : [Résolu] Comment lancer une commande bash au login
Bon j'ai fait
usermod -s /bin/bash MOIet désormais
echo $SHELLme retourne /bin/bash
Mais ça ne change rien, toujours rien ne s'affiche.
Le serveur (OVH) affiche des informations système à chaque login. Est-ce qu'un autre fichier que .bashrc ne serait pas appelé à la place ?
En fouillant j'ai trouvé que le fichier /etc/profile a été rempli (sûrement par OVH) avec ça :
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fiJe ne comprends pas trop pourquoi la ligne
. /etc/bash.bashrccommence par un point et un espace.
En renommant /etc/.bashrc en /etc/bash.bashrc rien de plus ne se passe...
Merci pour toute suggestion...
Tintinux
Precise Pengolin sur mon portable professionnel (64 bits), celui de madame, et sur un serveur dédié hébergé.
Natty Narwhal sur 2 autres portables de la famille dont celui de ma maman qui, à 77 ans, n'a pas remarqué la différence avec MS-Windows !
Et toujours un Lucid Lynx sur un serveur à la maison
Sans Unity, trop peu ergonomique, remplacé par Mate .
Hors ligne
#8 Le 24/01/2013, à 22:20
Re : [Résolu] Comment lancer une commande bash au login
/!\ le point d'exclamation est interprété en bash (et sh) donc,
soit
#!/bin/bash
echo 'bonjour !'soit
#!/bin/bash
echo "bonjour"à verifier
Hors ligne
#9 Le 24/01/2013, à 23:47
Re : [Résolu] Comment lancer une commande bash au login
Bonsoir,
Je ne comprends pas trop pourquoi la ligne
. /etc/bash.bashrccommence par un point et un espace.
./monscript.shmonscript.sh est exécuté dans un sous-shell, les variables, fonctions,... sont détruites a la fin de l'exécution.
. ./monscript.shmonscript.sh est exécuté dans le shell courant, son contenu est accessible a la fin de l'exécution. C'est ce qu'on appelle le dot-sourcing.
$ cat test.sh
#!/bin/bash
a="Bonjour !"
$ ./test.sh
$ echo $a
$ . ./test.sh
$ echo $a
Bonjour !Asus M5A88-v EVO : AMD Phenom II X4 960T BE : 16 Go DDR3 : Precise Pangolin , LXDE
HP dv7-3145ef : i5-430M : 4 Go DDR3 : Oracle Linux 6.3 , Gnome 2
EMachine EM350 : Atom N450 : 1 Go DDR2 : Debian Wheezy , LXDE
Hors ligne
#10 Le 24/01/2013, à 23:58
Re : [Résolu] Comment lancer une commande bash au login
J'ai le même /etc/profile que toi, c'est celui qui vient avec le système.
J'ai encore une idée qui pourrait marcher : ajouter
$HOME/.bashrcà la fin de /etc/profile, et rendre le .bashrc exécutable.
@Sciensous : J'ai vérifié les deux versions dans mon .bashrc, elles se comportent de la même manière (elles affichent "Bonjour !"). Par contre, en les entrant manuellement, la deuxièms me renvoie une erreur...
Hors ligne
#11 Le 25/01/2013, à 10:17
Re : [Résolu] Comment lancer une commande bash au login
Merci à tous pour vos différentes précisions utiles.
Il fallait effectivement modifier /etc/profile pour qu'il appelle .bashrc, sinon ce n'était pas fait.
J'ai donc ajouté à la fin :
# lancement auto
if [ -f .bashrc ]; then
. ./.bashrc
fiTintinux
Precise Pengolin sur mon portable professionnel (64 bits), celui de madame, et sur un serveur dédié hébergé.
Natty Narwhal sur 2 autres portables de la famille dont celui de ma maman qui, à 77 ans, n'a pas remarqué la différence avec MS-Windows !
Et toujours un Lucid Lynx sur un serveur à la maison
Sans Unity, trop peu ergonomique, remplacé par Mate .
Hors ligne
Pages : 1
- Accueil
- » Forum
- » Terminal, scripts et ligne de commande
- » [Résolu] Comment lancer une commande bash au login