2017-03-02 1 views
0

J'ai exécuté le script bash suivant:Attribution stdin à déposer attribue également stdout à ce fichier

#!/bin/env bash 
exec 0<log 

Ma compréhension est qu'il réaffecte de façon permanente le stdin pour ce processus bash dans le fichier journal. Donc, quand j'ai couru

ls > log 

Je m'attendais à ce que je passais "ls" à stdin. Comme je n'ai pas réaffecté stdout, je m'attendais aussi à voir le résultat de la commande "ls" dans le terminal (où je vois normalement stdout). Cependant, j'ai vu la sortie de "ls" dans le fichier journal. Pourquoi stdout dans le fichier journal et pas le terminal?

Répondre

1

ls écrit dans n'importe quel fichier pour la sortie standard. Sans redirection, c'est le fichier hérité de son parent (votre script). Avec la redirection, vous fournissez explicitement le fichier log pour la sortie standard.

Ceci est indépendant de tout ce que le fichier log peut être utilisé.