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

标签 linux bash ubuntu terraform windows-subsystem-for-linux

我正在使用“Windows 上 Ubuntu 上的 Bash”(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

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

  1. 已经以根用户身份登录(“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:找不到命令”消息。我什至尝试关闭并启动一个新的命令行 session ,甚至重新启动我的计算机。仍然没有变化。

有人知道如何解决这个问题吗?再次注意,我使用的是“Windows 上的 Ubuntu 上的 Bash”(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 上的条目必须是目录,并且在您的帖子中没有任何内容表明您在 /usr/local/terraform 中创建了一个目录。

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

关于linux - 在 Windows 上的 Ubuntu 上的 Bash 上设置 $PATH 的问题(Linux 子系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615279/

相关文章:

linux - 如何使用 bash 查找日期范围内的特定日期?

mysql - 是否可以将我的数据库导入另一台服务器?

linux - 如何使用 shell 脚本获取进程的所有子进程或孙进程的 pid

bash - 如何从新终端中的程序获取返回码? (巴什 "Inception")

bash - 如何获取某个字符后面的子字符串,如果该字符不存在则返回空

c# - Mono native 二进制包无法在较新的 Linux 内核中加载 libc

R 不使用超过 4GB 的内存

ubuntu - 如何在 Ubuntu 中安装 Maitre D

linux - 使用 getTimer() 方法在 ActionScript 2 中休眠

linux - 可以将 Tmux 配置为加载 ~/.bashrc 而不是 ~/.bash_profile 吗?