Ich möchte Bash Prozess Ersetzung für einen Sudo-Befehl verwenden.Verwenden Bash Prozess Ersetzung für einen Sudo-Befehl
Zum Beispiel, hier ist ein nicht-sudo-Befehl, der für mich funktioniert:
$ cat <(echo "installed.txt")
installed.txt
Und hier ist ein sudo Version des Befehls, das nicht funktioniert:
$ sudo cat <(echo "installed.txt")
cat: /dev/fd/63: Bad file descriptor
Lesen der sudo Manpage scheint es, dass sudo alle außer den stdin/stdout/stderr Dateideskriptoren schließt, bevor der Befehl als root ausgeführt wird. Das führt mich zu der Annahme, dass bash den Deskriptor erstellt (und die Prozesssubstitution ausführt), bevor er den Befehl sudo ausführt.
Ich änderte die root-Shell in bash (anstelle von sh default). Ich habe getestet, dass der Befehl funktioniert, wenn Sie als root angemeldet sind. Es funktioniert nur nicht mit einem sudo-Befehl.
Was ist die geeignete Technik, um das zu erreichen, was ich hier versuche? Eval, Zitat, Sudo Flagge, Sudoers Datei Mod, andere?
Alles ist ein Einzeiler; Ich möchte es vermeiden, das zu tun. –
@ClaytonStanley Dann verwenden Sie die Lösungen in den anderen (sehr guten) Antworten gegeben ... –