Forum Linux.redhat Variables d'environnement / Export de variables, fonctions / Script Bash / Bashrc / Trap Signaux

Posté par . Licence CC by-sa
-1
6
sept.
2016

Bonjour à tous,

Je cherche à créer une fonction dans mon fichier ~/.bashrc qui me permette d'exit ma session SSH en deux coups de CTRL_C.
Cette partie là fonctionne.

ATTEMPT=0
function_logout()
{
        if [ $ATTEMPT -eq 0 ] ;
                then ATTEMPT=1
                        echo "Prochain ^C =logout"

                else
                        logout

        fi
}
trap function_logout SIGINT

Effectivement après deux CTRL_C je suis déconnecté.

Cependant je veux également qu'après un sudo su - user la variable ATTEMPT et la fonction function_logout soient initialisées sur la session fille.

J'utilise donc la commande export :

export ATTEMPT function_logout

Voilà, seulement après mon sudo su - user ma variable ATTEMPT et ma FONCTION n'existent pas.

Merci par avance de votre aide !

Antoine

  • # man su

    Posté par . Évalué à 2.

    Bonjour,

    man su

    -, -l, --login
    Appelle le shell sous forme de shell de connexion.
    Voici ce que cela signifie : Invalider toutes les
    variables d'environnement sauf TERM, HOME, et
    SHELL (qui sont renseignées comme décrit ci-
    dessus), ainsi que USER et LOGNAME (qui sont
    alors remplies même pour le Super-Utilisateur).
    Remplir PAT' avec une valeur par défaut donnée
    lors de la compilation. Se déplacer dans le réper­
    toire HOME de l'utilisateur. Ajouter "-" au nom du
    shell, pour que celui-ci lise son ou ses fichiers

    => avec un su - toutes les variables d'environnement sont "supprimées" sauf …

    Pour éviter cela, il faut utiliser un su sans -

    Cordialement.

  • # hum...

    Posté par . Évalué à 1.

    Alors, pour sudo, il y a une option -E comme --preserve-env qui fait ce que son nom l'indique.
    pour su il y a --preserve-environment.

    Sinon, pourquoi sudo su - user plutôt que sudo -u user ?

  • # sinon y a Ctrl+D

    Posté par . Évalué à 4.

    sinon il y a Ctrl+D
    definit par defaut dans le shell, qui va quitter la session courante.

    et si tu es dans un sudo,
    Ctrl+D sors du sudo
    Ctrl+D sors du ssh

  • # Merci à tous

    Posté par . Évalué à 1.

    Bonjour !

    Merci à tous pour vos réponses qui me serviront toutes à l'avenir.
    Mention spéciale à NeoX pour le CTRL D je n'ai jamais vu cette info dans mes multiples recherches sur les signaux etc…

    A bientôt

    Antoine

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.