これらのコマンドは実質的に異なるのでしょうか、それとも意味的にのみ異なるのでしょうか?

これらのコマンドは実質的に異なるのでしょうか、それとも意味的にのみ異なるのでしょうか?

curlスクリプトを取得して実行するシェル スクリプトでは、これら 2 つのアプローチは実質的に異なりますか?

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

...対...

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

sudo2 番目のコマンドの直前の部分について、疑問に思う点があるのですcurlが、それが最初のコマンドとどう違うのか (リスクが高いのか) を明確に説明できません。

答え1

重要な違いがいくつかあります。

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

curl現在のユーザーとして、またroot として実行され、書き込む前にteeの内容をクリアします。/usr/bin/dosomething.sh

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

ルートとして実行されcurl、現在のユーザーの権限で追加しようとします/usr/bin/dosomething.sh(現在のシェルがリダイレクトを設定します)。

関連情報