sudo:aws:找不到命令



在我的Centos机器上安装了aws cli 2。增加

PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr\local/bin">

/etc/environment。在大多数情况下,aws命令都可以成功调用。但是,当使用sudo aws时,它显示未找到命令。以下是所有场景。知道吗?

[centos@ip-172-20-x-x ~]$ aws --version
aws-cli/2.1.28 Python/3.8.8 Linux/3.10.0-1160.11.1.el7.x86_64 exe/x86_64.centos.7 prompt/off
[centos@ip-172-20-x-x ~]$ sudo su
[root@ip-172-20-x-x centos]# aws --version
aws-cli/2.1.28 Python/3.8.8 Linux/3.10.0-1160.11.1.el7.x86_64 exe/x86_64.centos.7 prompt/off
[root@ip-172-20-x-x centos]# sudo aws --version
sudo: aws: command not found
[root@ip-172-20-x-x centos]# cat /etc/environment
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin"
[root@ip-172-20-x-x centos]# sudo env
HOSTNAME=ip-172-20-x-x.ap-southeast-1.compute.internal
TERM=xterm
HISTSIZE=1000
USERNAME=root
MAIL=/var/spool/mail/centos
LANG=en_US.UTF-8
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
LOGNAME=root
USER=root
HOME=/root
SHELL=/bin/bash
SUDO_COMMAND=/bin/env
SUDO_USER=root
SUDO_UID=0
SUDO_GID=0
XDG_SESSION_ID=20

不确定CLI是如何安装的,以及为什么aws cli需要sudo。

假设你在机器上有sudo权限,可以使用下面的命令进行安装,从帖子中我可以看到你已经在根路径中有了/usr/local/bin

安装命令在新解压的aws目录中使用一个名为install的文件。默认情况下,所有文件都安装到/usr/local/aws cli中,并在/usr/local/bin中创建一个符号链接。该命令包括sudo,用于授予目录的写入权限

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

或者,您可以简单地用centos非root用户可用的aws cli路径更新root路径。

要查找aws-cli的路径,可以使用which命令

$ which aws
/usr/local/bin/aws
export PATH=<AWS CLI PATH>:$PATH 

在Linux 上安装、更新和卸载AWS CLI版本2

首先,使用pip正确安装awscli:您可能已将其与apt一起安装,但尽管awscli软件包在存储库中可用于其他软件包管理器,如aptyum这些软件包不由AWS生成、管理或支持。因此,如果你没有安装pip,请尝试重新安装awscli,如下所示:

sudo pip install awscli --force-reinstall --upgrade

否则,如果使用不带sudo的捆绑安装程序安装了awscli,则必须知道这会将AWS CLI安装到默认位置(~/.local/lib/aws),并在~/bin/aws处创建符号链接(symlink)。确保~/bin在您的PATH环境变量中,以便符号链接工作,如下所示:

$ echo $PATH | grep ~/bin     // See if $PATH contains ~/bin (output will be empty if it doesn't)
$ export PATH=~/bin:$PATH     // Add ~/bin to $PATH if necessary

如有任何疑问,请访问官方文件。