Estou tentando adicionar uma linha ao arquivo de hosts no meu Mac executando um comando de uma linha no terminal.
Eu pensei que seria fácil usar o sudo, mas ele retorna "permissão negada" quando tento adicionar >>
ao arquivo hosts, mas funciona se eu tentar substituir >
o conteúdo dos hosts.
sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$
sudo echo test > /etc/hosts
Password:
$
O sistema operacional está atualizado.
Respostas:
Isso
echo
ocorre porque está sendo executado como root, mas é o shell que realmente está realizando o redirecionamento. Você precisa gerar um novo shell para que isso funcione:Edit: Eu não vi o fato de que o
>
redirecionamento funciona; Eu não posso explicar isso.fonte
tee
porque permitir uma execução de sub-shellsudo
é e deve ser bloqueado na maioria dos ambientes de produção por motivos de segurança.Em vez de executar o eco por meio de um redirecionamento que será executado como seu usuário atual, e não como root, como o eco está sendo executado no seu exemplo, use tee como sugere Steve Buzonas
O sudo agora é aplicado ao comando tee. O '-a' anexa ao arquivo
Isso também produzirá tee para a saída padrão. Se você não quiser ver 'test' em seu terminal, adicione também:
> /dev/null
ao final dessa linha.fonte
Para garantir que uma nova linha foi criada primeiro, usei o seguinte:
fonte