GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la portée des variables shell exportées dans Unix ?

  • OK, pour commencer, je pense que vous voulez dire ps --pid et non ps ---pid .
  • Vous n'avez pas besoin de echo $$ puis tapez le nombre dans ps --pid number;il suffit de taper ps --pid $$ . Sauf si vous parlez de

    # echo $$
    42
    # su joe
    % ps --pid 42
    

    auquel cas vous faites ce qu'il faut.

  • À quoi vous attendiez-vous ?

    --pid pidlist

      Sélectionner par ID de processus. Identique à -p et p .


    -p pidlist

      Sélectionner par PID. Cela sélectionne les processus dont les numéros d'identification de processus apparaissent dans pidlist . Identique à p et --pid .

    Donc, quand vous faites ps --pid PID_of_shell , vous obtenez la ligne de ps la sortie de pour le processus shell uniquement . Vous pourriez trouver ps -l | grep PID_of_shell plus utile ; il affichera toute ligne contenant PID_of_shell n'importe où, y compris dans la colonne PPID. C'est-à-dire qu'il affichera les processus enfants du shell. Mais, bien sûr, grep 42 trouvera des choses comme 7428 .

  • Votre supposition est bonne ; les variables d'environnement sont transmises du parent à l'enfant. Comme indiqué ci-dessus, votre su shell est un enfant de votre shell de connexion (ou d'un autre shell parent). Notez cependant qu'un processus peut changer d'environnement ;sudo est quelque peu connu pour cela, et su le fait aussi (par exemple, il change $USER , $LOGNAME , et $HOME sauf si vous spécifiez --preserve-environment ,et encore plus si vous spécifiez --login ). De plus, un processus peut transmettre à ses enfants un environnement différent de celui qu'il utilise; le shell le fait quand vous dites quelque chose comme PAGER=cat man man_page_topic . Références :1, 2.
  • Donc, non, si vous définissez (exportez) une variable d'environnement dans le shell d'un terminal, puis démarrez un autre terminal via le gestionnaire de fenêtres, il ne verra pas la variable d'environnement, car ce n'est pas un enfant (ou un descendant) de la coquille qui l'a placé. Mais, si vous démarrez une nouvelle fenêtre de terminal à partir du shell (par exemple, par xterm& ), alors cette fenêtre de terminal héritera de l'environnement du shell.

Linux
  1. Détecter le système d'initialisation à l'aide du shell ?

  2. Que se passe-t-il exactement lorsque j'exécute un fichier dans le shell ?

  3. La différence d'utilisation entre les variables shell et les variables d'environnement ?

  4. Quels sont les paramètres/variables spéciaux du shell (bash) ?

  5. Quels sont les différents types de shells sous Linux ?

Qu'est-ce que le Shell sous Linux ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Qu'est-ce qu'un fichier .sh ?

Quelle est la différence entre &> et >&en bash ?

Quel est le shell par défaut de Busybox ?