这些命令在本质上是不同的,还是只是语义上的不同?

这些命令在本质上是不同的,还是只是语义上的不同?

curl在用于获取脚本然后执行它的shell 脚本中,这两种方法有本质上的不同吗?

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

sudo第二个命令中的右边有一些东西curl让我停顿,但我无法清楚地表达它是否或如何与第一个命令不同(风险更大?)。

答案1

存在许多实质性差异。

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

curl以当前用户和teeroot 身份运行;它还会/usr/bin/dosomething.sh在写入之前清除 的内容。

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

以 root 身份运行curl,并尝试附加/usr/bin/dosomething.sh当前用户的权限(当前 shell 设置重定向)。

相关内容