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

Issues setting $PATH on Bash on Ubuntu on Windows (Linux Subsystem)

我正在使用 "Bash on Ubuntu on Windows"(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: command not found

这告诉我需要将 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

在此文本的正下方,我添加了以下内容,并使用 :wq!:

成功保存了文件
 export PATH=/usr/local/bin:$PATH
 export PATH=$PATH:/usr/local/terraform

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

terraform -version

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

有人知道如何解决这个问题吗?再次注意,我使用的是 "Bash on Ubuntu on Windows"(Linux 子系统)。如有任何意见,我们将不胜感激!

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

在尝试添加到 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/terraform 添加到 PATH。这很可疑,因为 PATH 上的条目必须是目录,而在您的 post 中没有任何内容表明您在 /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.

  3. 中手动执行添加的命令

点击下面的命令

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