当我这样做的时候
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 命令得到任何输出
为什么?是因为 read 是内置的 bash 吗?这里发生了什么?
最佳答案
你说得对。 “read”是 shell 内置的。进程名称仍为 sh(或 bash、zsh,或您选择的任何其他 shell)。
此外,虽然对于某些 shell 内置程序有二进制替代方案,但没有可供读取的替代方案。实际上是因为它的语法,它接受一个 shell 变量的名称,该变量被分配从标准输入读取的结果。如果它是外部程序,它永远无法在调用 shell 中设置变量。
关于linux - lsof 没有为 bash 内置读取提供 o/p,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398726/