bash: terraform: command not found, export $PATH unresolved

11,860

Solution 1

First the fix, and then the explanation:

ln -snf /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform
# or equivalently:
#rm /usr/bin/terraform
#ln -s /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform

Currently you have /usr/bin/terraform pointing to /home/milenko/tectonic_1.7.9-tectonic.2.

Which is not correct, because the terraform binary is in /home/milenko/tectonic_1.7.9-tectonic.2/terraform.

You need to make /usr/bin/terraform point to /home/milenko/tectonic_1.7.9-tectonic.2/terraform.

Let's understand what's happening here:

ln -s /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform
ln: failed to create symbolic link '/usr/bin/terraform/terraform': File exists

Why does the command fail? Since /usr/bin/terraform exists, and it points to /home/milenko/tectonic_1.7.9-tectonic.2, the above comment will not try to replace /usr/bin/terraform, but try to create /usr/bin/terraform/terraform. And since /usr/bin/terraform points to /home/milenko/tectonic_1.7.9-tectonic.2, /usr/bin/terraform/terraform already exists, it's actually the same thing as /home/milenko/tectonic_1.7.9-tectonic.2/terraform. And so the file exists, and the command fails.

One solution is to remove the incorrect symlink /usr/bin/terraform and then re-run ln -s /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform.

Another solution is to add the -f and -n flags to ln, to force replace the symlink:

ln -snf /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform

Solution 2

Jan, 2022 Update:

You better install Terraform again following The Official Terraform Website. But for example, to install Terraform for Ubuntu and Debian, we need to run 4 commands as shown below which is troublesome. Moreover each time we open a terminal, we need to run the 4 commands below which is more troublesome:

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform

So I concatenate them above with "&&" as shown below so that we can run them above at once and it works fine. Just copy, paste and run the command below for Ubuntu and Debian:

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl &&
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - &&
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" &&
sudo apt-get update && sudo apt-get install terraform

I searched a lot for the error "bash: terraform: command not found" but there aren't any easy solutions.

Share:
11,860
MikiBelavista
Author by

MikiBelavista

Updated on June 04, 2022

Comments

  • MikiBelavista
    MikiBelavista almost 2 years

    All my efforts to run terraform(exe) from command line in Ubuntu are unsuccessful

    ~/tectonic_1.7.9-tectonic.2$ terraform init ./platforms/metal
    terraform: command not found
    

    I changed ~/.profile file

    PATH="$HOME/bin:$HOME/.local/bin:$HOME/bin/tectonic_1.7.9-tectonic.2:$PATH"
    

    and latter sym link

    /usr/bin# ls -l terraform
    lrwxrwxrwx 1 root root 39 dec  6 16:29 terraform -> /home/milenko/tectonic_1.7.9-tectonic.2
    

    I don't understand what is wrong.If I try what Asere suggested

    ln -s /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform
    ln: failed to create symbolic link '/usr/bin/terraform/terraform': File exists
    
    • Aserre
      Aserre over 6 years
      In your example, /home/milenko/tectonic_1.7.9-tectonic.2 seems to be a folder ... Are you sure you shouldn't write something like ln -s /home/milenko/tectonic_1.7.9-tectonic.2/terraform /usr/bin/terraform instead ?
    • MikiBelavista
      MikiBelavista over 6 years
      @Aserre Take a look at my edit please!
    • that other guy
      that other guy over 6 years
      @MikiBelavista You have to remove your old, invalid link first. rm /usr/bin/terraform