- Vale, para empezar, creo que te refieres a
ps --pid
y nops ---pid
. -
No necesitas
echo $$
y luego escriba el número enps --pid number
;es suficiente escribirps --pid $$
. A menos que estés hablando de# echo $$ 42 # su joe % ps --pid 42
en cuyo caso estás haciendo lo correcto.
-
¿Qué esperabas?
--pid lista de pid
- Seleccione por ID de proceso. Idéntico a -p y p .
-p lista de pid- Seleccione por PID. Esto selecciona los procesos cuyos números de ID de proceso aparecen en pidlist . Idéntico a p y --pid .
Entonces, cuando haces
ps --pid PID_of_shell
, obtienes la línea deps
Salida de solo para el proceso de shell . Puede encontrarps -l | grep PID_of_shell
más útil; mostrará cualquier línea que contengaPID_of_shell
en cualquier lugar, incluso en la columna PPID. Es decir, mostrará los procesos secundarios del shell. Pero, por supuesto,grep 42
encontrará cosas como7428
. - Su conjetura es correcta; Las variables de entorno se pasan de padre a hijo. Como se indicó anteriormente, su
su
shell es un elemento secundario de su shell de inicio de sesión (u otro shell principal). Tenga en cuenta, sin embargo, que un proceso puede cambiar su entorno;sudo
es algo notorio por hacer esto, ysu
lo hace también (por ejemplo, cambia$USER
,$LOGNAME
y$HOME
a menos que especifique--preserve-environment
, y aún más si especifica--login
). Además, un proceso puede pasar a sus hijos un entorno diferente al que está utilizando; el shell hace eso cuando dices algo comoPAGER=cat man man_page_topic
. Referencias:1, 2. - Entonces, no, si configura (exporta) una variable de entorno en el shell en una terminal y luego inicia otra terminal a través del administrador de ventanas, no verá la variable de entorno, porque no es un hijo (o descendiente) del caparazón que lo puso. Pero, si inicia una nueva ventana de terminal desde el shell (por ejemplo, por
xterm&
), entonces esa ventana de terminal heredará el entorno del shell.
¿Qué es el Shell en Linux?