Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#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 $SHELL

pour 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 $SHELL

me 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 TOI

Normalement, 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 MOI

et désormais

echo $SHELL

me 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
fi

Je ne comprends pas trop pourquoi la ligne

. /etc/bash.bashrc

commence 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,

tintinux a écrit :

Je ne comprends pas trop pourquoi la ligne

. /etc/bash.bashrc

commence par un point et un espace.

./monscript.sh

monscript.sh est exécuté dans un sous-shell, les variables, fonctions,... sont détruites a la fin de l'exécution.

. ./monscript.sh

monscript.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
fi

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

Haut de page ↑