echo
だからです root として実行されていますが、実際にリダイレクトを実行しているのはシェルです。これを機能させるには、新しいシェルを生成する必要があります:
sudo -- sh -c "echo test >> /etc/hosts"
編集:>
という事実を見たことがない リダイレクトが機能します。それは説明できません。
例でエコーが実行されているため、ルートではなく、現在のユーザーとして実行されるリダイレクトを介してエコーを実行するのではなく、スティーブブゾナスが提案するようにティーを使用します
echo 'test' | sudo tee -a /etc/hosts
sudo が tee コマンドに適用されるようになりました。 「-a」はファイルに追加します
これにより、tee も標準出力に出力されます。端末に 'test' を表示したくない場合は、> /dev/null
も追加してください。 その行の終わりまで。