将stdin分配给文件也会将stdout分配给该文件

时间:2017-03-02 15:20:04

标签: bash exec stdout stdin

我执行了以下bash脚本:

#!/bin/env bash
exec 0<log

我的理解是它永久地将此bash进程的stdin重新分配给日志文件。所以,当我跑步时

ls > log

我期待我将“ls”传递给stdin。由于我没有重新分配stdout,我也期望在终端(我通常看到stdout)中看到“ls”命令的结果。但是,我在日志文件中看到了“ls”的输出。为什么stdout在日志文件中而不是终端?

1 个答案:

答案 0 :(得分:1)

ls写入为标准输出提供的任何文件。没有重定向,这是它从父(您的脚本)继承的任何文件。通过重定向,您可以明确地为标准输出提供文件log

这与文件log可能用于的任何其他内容无关。