Git Bash无法解析“sam”命令。

26

我正在使用最新的Win10操作系统。在安装了AWS-SAM-CLI并测试了安装后,我发现:

sam --version

我收到了消息

bash: sam: 命令未找到

然而,当我使用 Powershell、cmd 或 ConEmu 时,它们都可以解析“sam”。

路径为“e/Program Files/Amazon/AWSSAMCLI/bin”,但其他命令,如“yarn”,也正常工作,这些命令同样被安装在“e/Program Files/...”中。

有任何想法吗?谢谢


11
如果在普通的命令提示符中可以正常工作,那么你可以使用“alias sam="sam.cmd"”这个命令别名。现在,“sam --version”应该可以正常运行了。 - Nikolai
它还可以设置在终端打开时创建别名,例如使用 echo 'alias sam="sam.cmd"' >> ~/.bashrc;关于此的更多想法请参考这里 - mud
5个回答

38
sam.cmd --version

SAM CLI 的 Windows 版本没有直接的可执行二进制文件。相反,它是一个 .cmd 脚本,将您的选项回显到 Python 可执行文件中。

@rem
@echo off

setlocal

"%~dp0/../runtime/python.exe" -m samcli %*

我还没想出如何让它正常工作

sam --version

我的假设是,PowerShell 和命令提示符将 .cmd 视为可执行文件,不需要扩展名,而 Git Bash 则不会这样。


6
你可以在你的.bashrc文件中添加一个别名(alias),来使它不需要.cmd扩展名也能运行。具体方法可参考:https://dev59.com/6lYN5IYBdhLWcg3wfYG9#50391166 - C.M.
3
这个事实没有在安装文档中提到,真是令人恼火。 - Maxqueue
8
谢谢 @C.M. 我刚刚输入了alias sam='sam.cmd',现在一切都很顺利。 :) - isaacsan 123

25

以下是我如何使用别名使其正常工作的方法。

alias sam="/c/Program\ Files/Amazon/AWSSAMCLI/bin/sam.cmd"

虽然在从命令行直接调用sam时别名起作用,但在脚本中却不起作用。在按照上述步骤使它们在脚本中起作用后,请使用“sam.cmd”而不是“sam”。 - Arafat Nalkhande
你在哪里添加别名?在 VS Code 中还是其他地方? - spacedog
只需在命令行界面(即Git Bash)中运行此命令。 - FelixRe_

8
$ vi ~/.bashrc  # or favorite editor

地址:

alias sam='sam.cmd'

接着:

$ source ./.bashrc # can use '. ./.bashrc

3

虽然在命令行直接调用sam时别名有效,但在我使用的脚本中无法工作。

为了解决这个问题,我发现需要添加一个shell脚本等效于安装的.cmd脚本,命名为sam,放在相同的文件夹中,通常是C:\Program Files\Amazon\AWSSAMCLI\bin

#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")

case `uname` in
    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac

"$basedir/../runtime/python.exe" -m samcli "$@"
ret=$?
exit $ret

0
尝试卸载并重新安装SAM CLI。您可以通过运行以下命令来执行此操作:
pip uninstall aws-sam-cli
pip install aws-sam-cli
2. 检查您正在使用的Python版本。SAM CLI需要Python 3.6或更高版本。您可以通过运行命令python --version来检查Python版本。如果您正在使用早期版本的Python,则需要升级到较新的版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接