Ich versuche, der Hosts-Datei auf meinem Mac eine Zeile hinzuzufügen, indem ich einen einzeiligen Befehl auf dem Terminal ausführe.
Ich dachte, dass dies mit sudo einfach wäre, aber es gibt "Berechtigung verweigert" zurück, wenn ich versuche >>
, der Hosts-Datei etwas hinzuzufügen , aber es funktioniert, wenn ich versuche, >
den Host-Inhalt zu ersetzen .
sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$
sudo echo test > /etc/hosts
Password:
$
Das Betriebssystem ist auf dem neuesten Stand.
Antworten:
Das
echo
liegt daran, dass es als root ausgeführt wird, aber die Shell ist diejenige, die die Umleitung tatsächlich ausführt. Sie müssen eine neue Shell erstellen, damit dies funktioniert:Bearbeiten: Ich habe nicht gesehen, dass die
>
Umleitung funktioniert; Das kann ich nicht erklären.quelle
tee
halte es für erwähnenswert, das Dienstprogramm zu erwähnen, da das Zulassen einer Subshell-Ausführung vonsudo
in den meisten Produktionsumgebungen aus Sicherheitsgründen blockiert ist und blockiert werden sollte.Verwenden Sie Tee, wie Steve Buzonas vorschlägt, anstatt Echo durch eine Umleitung auszuführen, die als Ihr aktueller Benutzer ausgeführt wird, und nicht als Root, da Echo in Ihrem Beispiel ausgeführt wird
Das sudo wird jetzt auf den Abschlagbefehl angewendet. Das '-a' wird an die Datei angehängt
Dadurch wird auch das T-Stück auf die Standardausgabe ausgegeben. Wenn Sie "test" nicht in Ihrem Terminal sehen möchten, fügen Sie
> /dev/null
am Ende dieser Zeile Folgendes hinzu:quelle
Um sicherzustellen, dass zuerst eine neue Zeile erstellt wurde, habe ich Folgendes verwendet:
quelle