UNIX-Umleitung in eine Datei ohne Schreibberechtigung für das System

284
ayz649

Ich lerne die UNIX-Umgebung und habe eine Frage. Was passiert, wenn eine std-Fehlermeldung in eine Datei umgeleitet wird, wenn für die Datei, zu der wir umleiten, Schreibberechtigungen für den Benutzer verweigert werden?

Beispiel:

./command >file 2>&1 ./command 2>&1 >file 

Was passiert in erster Linie mit der Fehlermeldung? Wird es automatisch verworfen? Ich bekomme den gleichen Fehler für beide Zeilen, diese Berechtigung wird verweigert. Aber da das System von links nach rechts liest, was ist der Unterschied zwischen der Art und Weise, wie es gehandhabt wird?

Alle Links zu Tutorials, die in den dahinter stehenden Mechanismus einfließen, wären hilfreich. Bisher kann ich nur Informationen darüber finden, wie er damit umgeht, wenn wir Schreibberechtigungen haben.

1
Wie wäre es, es einfach auszuprobieren? $ touch out1; $ chmod 000 out1; $ echo "Hallo dort"> out1; bash: out1: Erlaubnis verweigert MariusMatutiae vor 7 Jahren 1

1 Antwort auf die Frage

1
Tatsuyuki Ishi

Kurze Antwort: Der Befehl wird überhaupt nicht ausgeführt.

Erläuterung: Die Umleitung basiert auf Dateideskriptoren, die mit dem Aufruf "open ()" erstellt werden müssen, bevor der Prozess ausgeführt wird.

Mein Schlag hat es einfach abgelehnt:

$ sleep 1 2>&1 > /nonwritable -bash: /nonwritable: Permission denied 

Sie sehen also, es gibt einen Schutz für die meisten Muscheln.