Contenu | Rechercher | Menus

Annonce

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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 24/01/2013, à 09:33

tintinux

[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, à 09:19)


12.04 LTS sur 4 machines professionnelles (dont un serveur dédié hébergé), et 2 autres moins à jour, pour la famille.
Sans Unity, trop peu ergonomique, remplacé par Mate .
Développeur indépendant d'applications, dont Gestinux, une comptabilité-gestion libre et multi-plateforme (dont Ubuntu).

Hors ligne

#2 Le 24/01/2013, à 12:23

louis94

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, à 12:38

tintinux

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 ?


12.04 LTS sur 4 machines professionnelles (dont un serveur dédié hébergé), et 2 autres moins à jour, pour la famille.
Sans Unity, trop peu ergonomique, remplacé par Mate .
Développeur indépendant d'applications, dont Gestinux, une comptabilité-gestion libre et multi-plateforme (dont Ubuntu).

Hors ligne

#4 Le 24/01/2013, à 15:23

louis94

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, à 15:38

tintinux

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é.


12.04 LTS sur 4 machines professionnelles (dont un serveur dédié hébergé), et 2 autres moins à jour, pour la famille.
Sans Unity, trop peu ergonomique, remplacé par Mate .
Développeur indépendant d'applications, dont Gestinux, une comptabilité-gestion libre et multi-plateforme (dont Ubuntu).

Hors ligne

#6 Le 24/01/2013, à 15:54

louis94

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, à 16:21

tintinux

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


12.04 LTS sur 4 machines professionnelles (dont un serveur dédié hébergé), et 2 autres moins à jour, pour la famille.
Sans Unity, trop peu ergonomique, remplacé par Mate .
Développeur indépendant d'applications, dont Gestinux, une comptabilité-gestion libre et multi-plateforme (dont Ubuntu).

Hors ligne

#8 Le 24/01/2013, à 21:20

Sciensous

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

En ligne

#9 Le 24/01/2013, à 22:47

xavier4811

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 !

Hors ligne

#10 Le 24/01/2013, à 22:58

louis94

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, à 09:17

tintinux

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


12.04 LTS sur 4 machines professionnelles (dont un serveur dédié hébergé), et 2 autres moins à jour, pour la famille.
Sans Unity, trop peu ergonomique, remplacé par Mate .
Développeur indépendant d'applications, dont Gestinux, une comptabilité-gestion libre et multi-plateforme (dont Ubuntu).

Hors ligne

Haut de page ↑