gpt4 book ai didi

powershell - 从 powershell 执行时,WSL 无法识别 "uname -s"之类的命令

转载 作者:行者123 更新时间:2023-12-03 17:37:29 25 4
gpt4 key购买 nike

我需要在 WSL 中执行以下命令:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

为了从 powershell 执行它,我尝试运行:

Ubuntu1804 run "sudo curl -L 'https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)' -o /usr/local/bin/docker-compose"

但是由于找不到uname -suname -m 的值而出现错误

uname : The term 'uname' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:107
+ ... ocker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(u ...
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (uname:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

但以下命令有效,因为我在该命令中手动输入了 uname -suname -m 的值。

 Ubuntu1804 run "sudo curl -L 'https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64' -o /usr/local/bin/docker-compose"

谁能帮我找到在使用 powershell 时,如何将一些命令的结果合并到另一个命令并在 WSL 中执行它?

此外,我如何在 WSL 命令中合并环境变量(如 $USER)的值并从 powershell 执行?

最佳答案

问题是命令参数中的子表达式 $( )。 PowerShell 在表达式模式下解释这些(因为允许扩展的双引号)并在将参数传递给 Ubuntu1804 之前寻找名为 uname 的可执行文件。

解决方案:

  • 运行后使用停止解析器运算符:--%

  • 翻转你的引号,这样扩展就不会发生:... 'sudo curl -L "...

  • 转义子表达式:`$`(`)

回答如何在 WSL 命令中包含环境变量:

& Ubuntu1804.exe ... $Env:USER ...

about_Parsing

about_Environment_Variables

关于powershell - 从 powershell 执行时,WSL 无法识别 "uname -s"之类的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com