2017-12-03 321 views
2

我正在使用“Windows上的Ubuntu上的Bash”(Linux子系统)并希望将Terraform添加到我的$ PATH中。由于Terraform无法通过安装apt-get的,我做了以下步骤:

  1. 导航到该目录,在这里我想安装Terraform:

    CD的/ usr /本地

  2. 在上面的路径,我用的wget下载Terraform:

    wget的 https://releases.hashicorp.com/terraform/0.9.8/terraform_0.9.8_linux_amd64.zip

  3. Terraform成功解压缩!当我打开VIM文件它是所有好:

    解压terraform_0.9.8_linux_amd64.zip

  4. 我再输入这个命令来检查,看看是否Terraform二是通过命令行访问:

    terraform -version

但是被返回以下消息:

terraform: command not found 

这告诉我需要将Terraform下载的位置添加到我的$ PATH中。

  • 已经被记录在作为根用户( “须藤ス”)我输入以下命令访问 “的.profile”:
  • VIM〜/简介

    以下是已经在该文件中,这是我离开不变:

    # ~/.profile: executed by Bourne-compatible login shells. 
    
    if [ "$BASH" ]; then 
        if [ -f ~/.bashrc ]; then 
        . ~/.bashrc 
        fi 
    fi 
    
    mesg n 
    

    正下方,这样的文字,我添加以下,并成功拯救文件使用:wq!

    export PATH=/usr/local/bin:$PATH 
    export PATH=$PATH:/usr/local/terraform 
    

    6. 我然后再输入以下命令来检查,看看是否在检测

    terraform

    terraform -version

    还是一样的 “terraform:命令未找到”消息被返回。我甚至尝试关闭并启动一个新的命令行会话,甚至重新启动我的电脑。仍然没有变化。

    任何人有任何想法如何解决这个问题?再次请注意,我正在使用“Windows上的Ubuntu上的Bash”(Linux子系统)。任何输入将不胜感激!

    +0

    我将用WSL启动Win10来确认,但确保Ubuntu使用(来源)'〜/ .profile'而不是'〜/ .bash_profile'。有些发行版使用其中一个,我不记得Ubuntu做了什么。例如,SuSE是前者,Archlinux是后者。 –

    +0

    将zip压缩包下载到系统位置是很奇怪和草率的。 '/ usr/local'可能是一个很好的目的地,用于安装你从压缩文件(库到'/ usr/local/lib',二进制文件到'/ usr/local/bin'等等)做得正确,你可能不需要更新你的'PATH'或其他系统配置设置。传统上,压缩包(不是zip)会包含一个'configure'脚本,它创建一个'Makefile'或者其他的东西,它允许你运行一个简单的脚本来安装(和卸载)这个包。 – tripleee

    回答

    3

    您的问题的直接答案是在最后。 但是我认为如果你继续阅读,这会更有意义。

    在尝试添加到PATH, 之前,我建议先测试一个程序。 在你的情况,我会做这样的:

    wget https://releases.hashicorp.com/terraform/0.9.8/terraform_0.9.8_linux_amd64.zip 
    unzip terraform_0.9.8_linux_amd64.zip 
    ./terraform 
    

    通知的最后一行./terraform。 zip文件包含一个文件,terraform, ,现在应该在当前目录中, ,所以我可以用./terraform运行它。 如果它是可执行的。 如果不是可执行文件,然后确认:

    ls -l terraform 
    

    ,并使其可执行如果需要的话:

    chmod +x terraform 
    

    现在,让我们将它添加到PATH。 但首先,我们决定在哪里放置这个可执行文件。 /usr/local/bin似乎是一个合理的位置。 那么让我们将terraform可执行文件移动到该目录中。

    通常/usr/local/bin已在PATH, 所以你可能不需要改变任何东西。 现在你可以试试你的支票,这里面的它已经工作的一个很好的机会:

    terraform -version 
    

    如果没有,那么/usr/local/bin不上PATH。 要添加它,在~/.profile加入这一行:

    export PATH=$PATH:/usr/local/bin 
    

    两个事情看起来根本不对您的方法:

    1. 添加/usr/local/terraformPATH。这很腥,因为PATH上的条目必须是目录,并且在你的文章中没有任何内容表示你创建了一个目录/usr/local/terraform

      • cd/usr/local,然后unzip terraform的zip文件。链接的zip包含一个名为terraform的文件,因此您示例中的/usr/local/terraform应该是一个文件。
      • 如果它是一个文件,那么你可以通过添加到PATH的基本目录来使其可执行为terraform。但将/usr/local添加到PATH不是一个好主意。这是传统的把二进制文件为/usr/local/bin,而不是直接进入/usr/local
    2. 你没有提到如何重新加载~/.profile。编辑此文件后,您添加的新命令不会在当前shell中自动执行。当你打开一个新的shell时它们会被执行。或者你可以在当前shell中手动执行添加的命令。

    +2

    这几乎是一本小说。干得好':)' –

    +0

    这很完美!非常感谢@janos!精美的解释!我感谢@David的努力!这个问题似乎是因为我没有将文件存储在'usr/local/bin'中。为PATH添加'/ usr/local/terraform'并将其存储在目录路径中的想法来自我正在关注网络的教程,所以我一味地跟着它,假设他知道我没有做过什么! – user791134

    +0

    @ user791134你很好地描述了你所有的步骤,这很容易找出问题所在。很少有人会这样做(他们不太可能得到很好的答案:所有人都会受到损失)。对你也很好! – janos

    相关问题