使用curl命令添加PPA是如何工作的?

这个链接讨论了安装nodejsnpm的不同方法。其中一种方法是通过ppa安装。

curl -sL https://deb.nodesource.com/setup | sudo bash -

他使用了上述命令来添加ppa。它是如何工作的?

可能是因为设置脚本会代表你添加PPA(或任何apt存储库)。例如,安装Google Chrome的.deb文件会代表你添加一个apt存储库。 - edwinksl
请注意,这通常被认为是一个不好的主意,部分原因是出于安全考虑,部分原因是因为如果下载中断,有一小部分机会你可能会执行错误的命令(比如rm -rf /usr而不是rm -rf /usr/bin/something/something)。 - user253751
@immibis现在我理解了,确实是的! - steoiatsl
3个回答

解释这行的意思:
curl -sL https://deb.nodesource.com/setup | sudo bash -

1. curl的标志和选项: -s <=> 静默模式 -L <=> 或 --location,将跟随重定向
2. sudo bash:
在sudo bash后面的减号实际上意味着将来自管道的输入视为bash脚本。这正是此链接包含的内容,一个bash脚本,你也可以使用这行代码:
wget -O- https://deb.nodesource.com/setup | sudo bash -

哪个会做完全一样的事情。

3这是不正确的;这里的-类似于--,表示bash选项的结束,而不是标准输入(STDIN)。实际上在这种情况下,你可以直接使用curl -sL https://deb.nodesource.com/setup | sudo bash - heemayl

看一下https://deb.nodesource.com/setup,当你运行这个脚本时,下面的两行代码会为你添加apt仓库:
exec_cmd "echo 'deb https://deb.nodesource.com/node_0.10 ${DISTRO} main' > /etc/apt/sources.list.d/nodesource.list"
exec_cmd "echo 'deb-src https://deb.nodesource.com/node_0.10 ${DISTRO} main' >> /etc/apt/sources.list.d/nodesource.list"

您授予此地址托管的shell脚本对您的计算机拥有完全访问权限,它将使用这些权限来添加源代码。
如果省略| sudo bash -部分,则会显示即将执行的命令,以便您在执行之前进行审查。最好在执行之前进行审查。

如果您添加了一个适当的软件源并从中安装了一个软件包,那么您就给了该软件包的维护者脚本完全访问您计算机的权限。因此,在运行这些命令之前检查shell脚本中的命令并不能真正帮助您防止恶意PPA操作员的攻击。 - Peter Green