GNU/Linux >> Linux の 問題 >  >> Linux

export の Unix シェル変数のスコープは何ですか?

  • 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& )、その端末ウィンドウはシェルの環境を継承します。

Linux
  1. シェルを使用してinitシステムを検出しますか?

  2. シェル変数と環境変数の使用法の違いは?

  3. シェルスクリプト行の最後にあるアンパサンドとはどういう意味ですか?

  1. UNIX / Linux :シェルとは?異なるシェルとは何ですか?

  2. Unix シェルで数値の列を合計する

  3. UNIXシェル変数への改行文字の追加

  1. LinuxとUnix:違いは何ですか?

  2. シェルでファイルを実行するとどうなりますか?

  3. 構文 |&はシェル言語で何を意味しますか?