aws 命令在 WSL 中有效,但不能作为 PowerShell 中的一行命令

aws 命令在 WSL 中有效,但不能作为 PowerShell 中的一行命令

我在 Windows 10 上使用 WSL(适用于 Linux 的 Windows 子系统),并在其上安装了 Amazon AWS cli。当我启动 WSL(C:\\WINDOWS\\System32\\wsl.exe在 PowerShell 中)时aws,它运行正常。如果我尝试将其作为一行程序运行(C:\\WINDOWS\\System32\\wsl.exe aws),它找不到该aws命令。我需要将其作为一行程序才能从 VS Code 任务中使用它。

PS C:\Users\pablo.DCA> C:\\WINDOWS\\System32\\wsl.exe aws
/bin/bash: aws: command not found
PS C:\Users\pablo.DCA> C:\\WINDOWS\\System32\\wsl.exe
pablo@DCA-WS01:/mnt/c/Users/pablo.DCA$ aws
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: too few arguments

一个简单的echo命令就可以完成:

PS C:\Users\pablo.DCA> C:\\WINDOWS\\System32\\wsl.exe echo Hi
Hi

Python (我用它来安装 aws) 也是如此:

PS C:\Users\pablo.DCA> C:\\WINDOWS\\System32\\wsl.exe python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

为什么会发生这种情况?我该如何修复它,或者我应该尝试找出问题所在?

答案1

最有可能的是 AWS 不在系统路径中,例如/usr/bin/。如果您将其添加到您的$PATH,例如~/.bashrc,它通常不会被执行,除非您重新启动终端。

一个选项是在 Windows 的一行调用中使用 aws 的完整路径:

c:\\windows\\system32\\wsl.exe /home/username/.local/bin/aws

-l或者,你可以使用(或--login)选项强制 bash 表现得像作为登录 shell 一样

 c:\\windows\\system32\\wsl.exe bash -l aws

相关内容