Не дает o/p для bash встроенного чтения

Когда я делаю

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 ответ

Решение

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

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

Другие вопросы по тегам