在 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,我执行了以下步骤:
导航到我想安装 Terraform 的目录:
cd /usr/local
在上面的路径中,我使用wget下载了Terraform:
wget
https://releases.hashicorp.com/terraform/0.9.8/terraform_0.9.8_linux_amd64.zip
Terraform 成功解压缩!当我在 VIM 中打开文件时一切正常:
解压terraform_0.9.8_linux_amd64.zip
然后我输入这个命令来检查是否可以从命令行访问 Terraform 二进制文件:
地形版本
但是会返回以下消息:
terraform: command not found
这告诉我需要将 Terraform 下载位置添加到我的 $PATH 中。
- 已经以 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
您的方法有两点看起来根本错误:
将 /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
你没有提到你是如何重新加载的~/.profile
。编辑此文件后,您添加的新命令不会在当前 shell 中自动执行。当您打开一个新的 shell 时,它们将被执行。或者您可以在当前 shell.
中手动执行添加的命令
点击下面的命令
export PATH=$PATH:/usr/local/bin
我正在使用 "Bash on Ubuntu on Windows"(Linux 子系统)并想将 Terraform 添加到我的 $PATH。由于无法通过 apt-get 安装 Terraform,我执行了以下步骤:
导航到我想安装 Terraform 的目录:
cd /usr/local
在上面的路径中,我使用wget下载了Terraform:
wget https://releases.hashicorp.com/terraform/0.9.8/terraform_0.9.8_linux_amd64.zip
Terraform 成功解压缩!当我在 VIM 中打开文件时一切正常:
解压terraform_0.9.8_linux_amd64.zip
然后我输入这个命令来检查是否可以从命令行访问 Terraform 二进制文件:
地形版本
但是会返回以下消息:
terraform: command not found
这告诉我需要将 Terraform 下载位置添加到我的 $PATH 中。
- 已经以 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
您的方法有两点看起来根本错误:
将
上创建了一个目录/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
- 你
你没有提到你是如何重新加载的
~/.profile
。编辑此文件后,您添加的新命令不会在当前 shell 中自动执行。当您打开一个新的 shell 时,它们将被执行。或者您可以在当前 shell. 中手动执行添加的命令
点击下面的命令
export PATH=$PATH:/usr/local/bin