- OK、まずは
ps --pid
のことだと思いますps ---pid
ではありません . -
echo $$
する必要はありませんps --pid number
に数字を入力します。;ps --pid $$
と入力するだけで十分です .あなたが話しているのでない限り# echo $$ 42 # su joe % ps --pid 42
その場合、あなたは正しいことをしています.
-
何を期待していましたか?
<ブロック引用>--pid pidlist
- プロセス ID で選択します。 -p と同じ と p .
-p pidlist- PID で選択します。これにより、プロセス ID 番号が pidlist に表示されるプロセスが選択されます。 . p と同じ および --pid .
したがって、
ps --pid PID_of_shell
を実行すると 、あなたはps
の行を取得しています の出力 シェル プロセスのみ .ps -l | grep PID_of_shell
が見つかるかもしれません より便利です。PID_of_shell
を含むすべての行が表示されます。 PPID 列を含め、どこでも。つまり、シェルの子プロセスが表示されます。しかし、もちろんgrep 42
7428
のようなものが見つかります . - あなたの推測は正しいです。環境変数は親から子に渡されます。上記のように、あなたの
su
shell は、ログイン シェル (または他の親シェル) の子です。ただし、プロセスはその環境を変更できることに注意してください;sudo
これを行うことでやや悪名高く、su
それも行います (例:$USER
を変更します) 、$LOGNAME
、および$HOME
--preserve-environment
を指定しない限り 、および--login
を指定するとさらに多くの )。また、プロセスは、使用している環境とは異なる環境を子プロセスに渡すことができます。PAGER=cat man man_page_topic
のようなことを言うと、シェルはそれを行います .参考文献:1, 2. - いいえ、あるターミナルのシェルで環境変数を設定 (エクスポート) し、ウィンドウ マネージャを介して別のターミナルを起動すると、子 (または子孫) ではないため、環境変数が表示されません。それを設定したシェルの。ただし、シェルから新しいターミナル ウィンドウを起動すると、 (例:
xterm&
)、その端末ウィンドウはシェルの環境を継承します。