Você pode usar tee :
$ echo "something" | sudo tee -a /etc/profile
Se você omitir o -a (anexar), o arquivo será sobrescrito.
Digamos que eu queira adicionar alguma linha ao / etc / profile. Eu tento:
$ sudo echo "something" >> /etc/profile
bash: /etc/profile: Access forbidden
Claro que eu poderia escrever:
$ sudo su
# echo "something" >> /etc/profile
e isso funciona, no entanto, não funciona dentro de um script de shell.
Então, qual é o caminho certo?
Você pode usar tee :
$ echo "something" | sudo tee -a /etc/profile
Se você omitir o -a (anexar), o arquivo será sobrescrito.
Sua versão:
sudo echo "something" >> /etc/profile
Nesse comando, echo é executado como root, mas o shell que está redirecionando a saída de echo para o arquivo somente raiz ainda está sendo executado como você. É por isso que você está recebendo "Acesso proibido"
Versão de trabalho:
sudo bash -c 'echo "something" >> /etc/profile'
Neste comando, você usa sudo para iniciar um novo shell com privilégios de root e, em seguida, fornece a esse shell toda a cadeia de comando (incluindo o redirecionamento) com a opção -c do bash.
Tags command-line scripts