0

我无法在我的 macos 上安装 sdkman。我提到了 sdkman installCan't install sdkman on Mac OS。不过,我还是错过了一些东西。有人可以帮帮我吗 ?我是 MacOS 和 sdkman 的新手。

当我去 bash 终端并输入curl -s "https://get.sdkman.io" | bash时,它会打印消息 failed to write body on terminal 并打开我的 bash 配置文件。我接下来应该做什么?我尝试按照上述网址中提到的步骤进行操作,甚至source按照建议使用,但我想有些东西不见了。实际上我从来没有在 bash 配置文件中写过任何东西,所以source我什至什么都不做。我使用我在网上找到的内容进行了多次尝试,但sdk version从未给出任何输出,它一直说sdk command not found。我在网上发现我需要升级curl,我什至做了仍然没有成功。有人可以为我写/解释我失踪的步骤吗?我会很感激。我确实在网上搜索过,但要么步骤不清楚,要么我没有做对。谢谢。

4

1 回答 1

0

在先前的 curl 完成写入整个页面之前,管道 bash 似乎更有可能关闭读取管道。当您发出curl -s "https://get.sdkman.io" | bash时,只要管道 bash 有它想要的东西,它就会立即关闭来自前一个 curl 的输入流。但是 cURL 并没有真正预料到这一点,并引发了“写入体失败”错误。您可能想尝试通过一个中间程序来管道流,该程序总是在输入 bash 之前读取整个页面。例如,您可以尝试这样的事情(在管道到 bash 之前运行 tac 两次):

curl -s "https://get.sdkman.io" | tac | tac | bash

tac 是一个 Unix 程序,可以反向连接和打印文件。在这种情况下,它读取整个输入页面并反转行顺序(因此我们运行了两次)。因为它必须读取整个输入才能找到最后一行,所以在 cURL 完成之前它不会向 bash 输出任何内容。当 bash 得到它需要的东西时,它仍然会关闭读取流,但它只会影响 tac,它不会引发错误。

于 2020-10-23T04:05:42.560 回答