web-dev-qa-db-fra.com

Pourquoi puis-je mettre à jour un fichier appartenant à racine à l'aide de sudo vi, mais ne pas ajouter une ligne à la ligne avec sudo echo "chose" >> fichier?

J'aimerais avoir un script qui effectue des migrations automatisées de sites Web d'un autre peut append à ajouter au fichier /etc/httpd/conf.d/vhosts.conf.

Cependant, lorsque j'essaie d'utiliser ECHO pour apporter une chaîne à la fin du fichier, je reçois ceci:

$ Sudo echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf
-bash: /etc/httpd/conf.d/vhosts.conf: Permission denied

et pourtant je peux vi /etc/httpd/conf.d/vhosts.conf, ajouter la ligne et: wq le fichier pour enregistrer et le fermer.

Qu'est-ce que je rate?

40
Nick Weavers

Sudo élève le processus appelle son appels, il n'élever à aucun des traitements de la coque actuels tels que la redirection, le globe, etc.

La redirection de fichier >> /etc/httpd/conf.d/vhosts.conf est en cours de traitement par votre courant Shell, qui fonctionne toujours sous vos privilèges actuels.

Vous pouvez essayer quelque chose comme ça.

Sudo bash -c 'echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf'

Ou

echo "Include thing" | Sudo tee -a /etc/httpd/conf.d/vhosts.conf
78
Zoredache