2011-06-18 3 views
2

を読みますコマンド。

しかし、私は(検索など)同じ端末上

echo hi ; read -t 30 hello 
hi 

を行うと、(別の端末上で)行う

lsof -a -d 0-2 -c read 

私は

コマンドのlsofから任意の出力を得ることはありません

なぜですか?読み込みはbashが組み込まれているからですか?ここで何が起こっていますか?

+0

この質問は技術的には[unix and linux](http://unix.stackexchange.com/)に属します –

答えて

3

あなたは正しいです。 "read"はシェルが組み込まれています。プロセス名はsh(またはbash、またはzshなど)のままです。

さらに、いくつかのシェル組み込み関数にはバイナリの代替がありますが、読み込み用のものはありません。実際にはその構文のために、stdinから読み込んだ結果を代入するシェル変数の名前を取ります。それが外部プログラムであれば、呼び出し側シェルに変数を設定することはできません。

+0

その変数は$ REPLYですよね? – abc

+0

bashの 'help read':NAMEが指定されていない場合、読み込まれた行はREPLY変数に格納されます。 –