在Windows上的Ubuntu上为Bash设置$ PATH的问题(Linux子系统)

use*_*134 7 linux bash ubuntu terraform windows-subsystem-for-linux

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

  1. 导航到此目录,我想在其中安装Terraform:

    cd/usr/local

  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
Run Code Online (Sandbox Code Playgroud)

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

  1. 已经以root用户身份登录("sudo su")我输入以下命令来访问".profile":

vim~/.profile

以下内容已在此文件中,我保持不变:

 # ~/.profile: executed by Bourne-compatible login shells.

 if [ "$BASH" ]; then
   if [ -f ~/.bashrc ]; then
     . ~/.bashrc
   fi
 fi

 mesg n
Run Code Online (Sandbox Code Playgroud)

紧接在这个文本下面,我添加以下内容,并使用:wq成功保存文件!:

 export PATH=/usr/local/bin:$PATH
 export PATH=$PATH:/usr/local/terraform
Run Code Online (Sandbox Code Playgroud)

6.然后,我再次输入以下命令以检查是否检测到terraform

terraform -version

仍返回相同的"terraform:command not found"消息.我甚至尝试关闭并启动新的命令行会话,甚至重新启动计算机.仍然没有变化.

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

Sto*_*ica 8

最后直接回答你的问题.但是我觉得如果你继续读这里会更有意义.

在尝试添加之前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
Run Code Online (Sandbox Code Playgroud)

注意最后一行./terraform.zip文件包含一个文件,terraform现在应该在当前目录中,因此我可以使用它来运行它./terraform.如果它是可执行的.如果它不可执行,请确认:

ls -l terraform
Run Code Online (Sandbox Code Playgroud)

并在需要时使其可执行:

chmod +x terraform
Run Code Online (Sandbox Code Playgroud)

现在让我们添加它PATH.但首先,让我们决定将此可执行文件放在何处. /usr/local/bin似乎是一个合理的位置 所以让我们将terraform可执行文件移动到该目录中.

通常/usr/local/bin已经开启PATH,因此您可能不需要更改任何内容.现在你可以试试你的支票了,它很有可能已经有效:

terraform -version
Run Code Online (Sandbox Code Playgroud)

如果没有,那就/usr/local/bin不在了PATH.要添加它,请在以下位置添加以下内容~/.profile:

export PATH=$PATH:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

你的方法看起来两件事情根本不对:

  1. 添加/usr/local/terraformPATH.这很可疑,因为条目PATH必须是目录,并且在您的帖子中没有任何表示您在其中创建了目录/usr/local/terraform.

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

  • 这几乎是一部小说.干得好`:)` (2认同)