- OK, pour commencer, je pense que vous voulez dire
ps --pid
et nonps ---pid
. -
Vous n'avez pas besoin de
echo $$
puis tapez le nombre dansps --pid number
;il suffit de taperps --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 deps
la sortie de pour le processus shell uniquement . Vous pourriez trouverps -l | grep PID_of_shell
plus utile ; il affichera toute ligne contenantPID_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 comme7428
. - 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, etsu
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 commePAGER=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.
Qu'est-ce que le Shell sous Linux ?