Das liegt daran, dass echo
wird als root ausgeführt, aber die Shell ist diejenige, die die Umleitung tatsächlich durchführt. Sie müssen eine neue Shell erstellen, damit dies funktioniert:
sudo -- sh -c "echo test >> /etc/hosts"
Bearbeiten:Ich habe nicht gesehen, dass die >
Umleitung funktioniert; Ich kann das nicht erklären.
Anstatt echo über eine Umleitung auszuführen, die als Ihr aktueller Benutzer ausgeführt wird, und nicht als root, da echo in Ihrem Beispiel ausgeführt wird, verwenden Sie tee, wie Steve Buzonas vorschlägt
echo 'test' | sudo tee -a /etc/hosts
Das sudo wird nun auf den tee-Befehl angewendet. Das '-a' wird an die Datei angehängt
Dadurch wird auch tee auf die Standardausgabe ausgegeben. Wenn Sie 'test' nicht in Ihrem Terminal sehen möchten, fügen Sie auch hinzu:> /dev/null
bis zum Ende dieser Zeile.