не дает o / p для bash встроенного чтения - PullRequest
2 голосов
/ 19 июня 2011

Когда я делаю

find /

на терминале, а затем делаю на другом терминале

lsof -a -d 0-2 -c fin

Я вижу o / p в списке выполнения команды lsof.

Но когда я делаю

echo hi ; read -t 30 hello
hi

на одном и том же терминале (как находить) и делаю (на другом терминале)

lsof -a -d 0-2 -c read

Я не получаю вывод от команды lsof

Почему?Это потому что чтение встроено в bash?Что здесь происходит?

1 Ответ

3 голосов
/ 19 июня 2011

Вы правильно поняли.«read» - встроенная оболочкаИмя процесса остается sh (или bash, или zsh, или что-либо еще по вашему выбору).

Более того, хотя для некоторых встроенных команд оболочки есть бинарные альтернативы, для чтения не существует.На самом деле из-за своего синтаксиса он принимает имя переменной оболочки, которой присваивается результат чтения из стандартного ввода.Если это была внешняя программа, она никогда не смогла бы установить переменную в вызывающей оболочке.

...