这是安装 Rust 的命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
做什么|
?
我认为 curl 从此链接下载了一个 .sh 文件,并 sh 以某种方式执行它。它是如何工作的?它在我的 Dockerfile 中不起作用,我需要传递-y
给它.sh
,但我不知道如何。
这是安装 Rust 的命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
做什么|
?
我认为 curl 从此链接下载了一个 .sh 文件,并 sh 以某种方式执行它。它是如何工作的?它在我的 Dockerfile 中不起作用,我需要传递-y
给它.sh
,但我不知道如何。
你从哪里得到这些指示?可能有文档解释了他们打算如何让你做你想做的事。
不用说,你可以
-y
像这样通过:-s
指示sh
从标准输入读取,即使有命令行参数 (-- -y
)。这--
是必要的,因此sh
知道将其-y
视为脚本的参数,而不是自身的标志sh
。对于您的实际问题,从https://sh.rustup.rs
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs
下载一些数据并输出。如果您访问该 URL,您将看到内容是一个 shell 脚本。所以这就是你要下载的。sh
是一个可以解析和运行这个脚本的基本 shell 程序,例如Dash或Bourne shell。该
|
字符将左侧命令的输出通过管道传输到右侧命令的输入。所以curl ... | sh
意思是“下载这个文本并运行它”。尽管这对于复杂的安装程序来说是一种比较常见的模式,但从技术上讲,它是一种远程代码执行形式,并且可能存在风险。在将任意内容从 Internet 路由到sh
、bash
、python
或其他在本地计算机上处理命令的 shell 或程序之前,请确保您信任来源。您可能已经注意到,您也可以从https://sh.rustup.rs下载源代码并直接运行它:
是
|
一个管道。在您的情况下,您需要卸载之前安装的 rust 并重新安装。