¿Son estos mandatos materialmente o sólo semánticamente diferentes?

¿Son estos mandatos materialmente o sólo semánticamente diferentes?

En un script de shell que se utiliza curlpara buscar un script y luego ejecutarlo, ¿son estos dos enfoques materialmente diferentes?

curl http://address-to-some-script/dosomething.sh | sudo tee /usr/bin/dosomething.sh

...contra...

sudo curl http://address-to-some-script/dosomething.sh >> /usr/bin/dosomething.sh

Hay algo en el sudoderecho anterior curlen el segundo comando que me hace reflexionar, pero no puedo articular si es diferente (¿más riesgoso?) que el primero y en qué medida.

Respuesta1

Hay una serie de diferencias materiales.

curl http://address-to-some-script/dosomething.sh | sudo tee /usr/bin/dosomething.sh

se ejecuta curlcomo usuario actual y teecomo root; también borra el contenido /usr/bin/dosomething.shantes de escribirle.

sudo curl http://address-to-some-script/dosomething.sh >> /usr/bin/dosomething.sh

se ejecuta curlcomo root e intenta agregar /usr/bin/dosomething.shlos permisos del usuario actual (el shell actual configura la redirección).

información relacionada