2010-03-13 13 views
4

J'ai un script shell personnalisé qui s'exécute chaque fois qu'un utilisateur se connecte ou que l'identité est supposée, il est placé dans /etc/profile.d et effectue certaines opérations de variable d'environnement de base. Récemment j'ai ajouté du code de sorte que si l'écran est en cours d'exécution il le rattachera sans avoir besoin de taper quoi que ce soit. Il y a cependant quelques problèmes. Si je me connecte en tant que root, et su - à un autre utilisateur, le code s'exécute une seconde fois. Y a-t-il une variable que je peux définir quand le code s'exécute la première fois qui empêchera une deuxième exécution du code?Qu'est-ce qui est commun entre les environnements dans une session de terminal shell?

Je pensais écrire quelque chose sur le disque, mais je ne veux pas empêcher le code de fonctionner si je commence une nouvelle session de terminal. Voici le code en question. Il essaie d'abord de rattacher - s'il échoue parce qu'il est déjà attaché (comme cela pourrait être le cas lors d'une session interrompue), il «reprendra» la session.

screen -r 

if [ -z "$STY" ]; then 
    exec screen -dR 
fi 

En fin de compte ce bug me empêche de se substituer utilisateur à un autre parce que dès que je le fais, il saisit la session de l'écran et me met tout de suite où j'ai commencé. Assez frustrant

+0

Je comprends où vous allez avec la suggestion cependant - comme j'ai répondu - j'ai ajouté ce code au répertoire de profil encore quand je substitue l'utilisateur (qui devrait seulement courir le 'bashrc' selon l'article) le code est toujours exécuté –

Répondre

1

Le $ {PPID} du shell que vous obtenez lorsque vous su serez le commande su. Ainsi, la sortie de

ps -o command= $PPID

commence par les lettres su, donc essai pour cela.

+0

MERCI - c'est exactement ce dont j'avais besoin –

0

Je pense que vous pouvez obtenir ce droit si vous lisez le message suivant (et l'homme pour votre shell favori) Question about login vs profile

+0

Eh bien, si je comprends bien cet article, je fais exactement ce que je devrais faire (mais le bug persiste). J'ai ajouté le script à l'ensemble du système à /etc/profile.d - et il ne devrait pas fonctionner quand je remplace l'utilisateur qui devrait être au niveau d'une action 'bashrc', si je ne me trompe pas .. peut-être que je suis –