Jon Griffith
Jon Griffith

Reputation: 183

What would be causing -bash: /usr/bin/aws: No such file or directory?

Aside from the obvious "no such file or directory" which is true...there is in fact no aws file in that location, this is coming up after attempting the final installation step of the V2 AWS-CLI installation routine found here. (aws --version)

Now, I have two Ubuntu systems side by side. I ran the same install on both and one succeeded, but the other did not. On the one that succeeded, there also is no AWS file in the path suggested by the error.

Furthermore, on both systems, the folder structure and symlinks of the installation appear to be identical. I'm using the root user on both, and comparing the file permissions on the system that failed with the one that works yields identical setups.

I suspect that AWS has been setup to point to the wrong path? Both $PATH environments are also identical on each machine.

The ONLY difference between the two machines is that one is Ubuntu 18.04 and the other is 20.04.

Any ideas what would be different about that and why I am unable to run AWS commands on this stubborn box?

Upvotes: 6

Views: 19137

Answers (2)

Byusa
Byusa

Reputation: 3097

Follow these steps from [https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html]:

  1. In your browser, download the macOS pkg file: [https://awscli.amazonaws.com/AWSCLIV2.pkg]

  2. Run your downloaded file and follow the on-screen instructions.

  3. To verify

    $ which aws
    /usr/local/bin/aws 
    $ aws --version
    aws-cli/2.7.24 Python/3.8.8 Darwin/18.7.0 botocore/2.4.5
    

Upvotes: 1

Devendra Mukharaiya
Devendra Mukharaiya

Reputation: 620

Short answer: run hash aws on shell

Details: awscli v1 points to /usr/bin/aws. awscliv2 points to /usr/local/bin/aws

On uninstalling awscliv1 and installing awscliv2, aws was still pointing to /usr/bin/aws, while which aws resulted in /usr/local/bin/aws.

Seems bash has cached the path /usr/bin/aws for aws executable.

$ which aws
/usr/local/bin/aws

$ aws
-bash: /usr/bin/aws: No such file or directory

So running any aws command would look for /usr/bin/aws (non-existing)

-bash: /usr/bin/aws: No such file or directory

hash aws clears this cache. After this, firing aws commands uses the correct path

$ aws --version
aws-cli/2.2.32 Python/3.8.8 Linux/5.4.0-77-generic exe/x86_64.ubuntu.18 prompt/off

Upvotes: 20

Related Questions