2

私がする時

find /

ある端末で実行してから別の端末で実行する

lsof -a -d 0-2 -c fin

lsofコマンドの実行からo/pがリストされているのがわかります。

しかし、私がするとき

echo hi ; read -t 30 hello
hi

同じ端末で(findとして)実行し、(別の端末で)実行します

lsof -a -d 0-2 -c read

lsofコマンドから出力が得られません

なんで ?読み取りがbashに組み込まれているためですか?ここで何が起こっているのですか?

4

1 に答える 1

3

正解です。「読み取り」はシェルビルトインです。プロセス名はsh(またはbash、zsh、またはその他の選択したシェル)のままです。

さらに、一部のシェルビルトインにはバイナリの代替手段がありますが、読み取り用のものはありません。本当にその構文のために、stdinからの読み取りの結果が割り当てられるシェル変数の名前を取ります。外部プログラムの場合、呼び出し元のシェルで変数を設定することはできません。

于 2011-06-18T20:41:58.403 に答える