通常,用于启动已安装程序的可执行文件的位置将添加到 $PATH
在 Linux 中。 因此,您可以从 shell 的任何位置运行该程序,而无需键入可执行文件的完整路径。 但是,在某些情况下,您需要手动将程序的安装位置添加到 $PATH
. 在这个简短的教程中,我们将看到如何在 Linux 操作系统中向 PATH 添加目录。
为什么要在 $PATH 中添加目录?
前几天我正在测试一个名为 车, 写在 锈 编程语言。 所以我安装了 Rust 使用 conda
我的 Ubuntu 系统中的包管理器,然后使用 Rust 安装了 Macchina cargo
包管理器。
当我尝试启动 Macchina 程序时,输出显示该程序未安装。 同样,我尝试安装它并收到以下错误消息:
Updating crates.io index Ignored package `macchina v0.5.9` is already installed, use --force to override warning: be sure to add `/home/sk/.cargo/bin` to your PATH to be able to run the installed binaries
你可能已经知道,当我们安装一个用 Rust 编写的程序时,可执行的二进制文件会保存在 Cargo 的 bin 目录下(即 ~/.cargo/bin
)。
$ ls ~/.cargo/bin/ macchina
如您所见,Macchina 二进制文件保存在cargo bin 目录中。 安装 Rust 后,我应该将此目录添加到我的 $PATH 中,但我忘记了。 于是就有了上面的问题!
如果我使用 Rust 安装了 Rust rustup
安装程序脚本,我不会遇到这个问题。 因为 rustup 脚本会自动将 Cargo 的 bin 目录添加到 $PATH
通过修改环境变量 轮廓 文件位于 ~/.profile. 但在这种情况下,我将 Rust 安装在一个 conda
环境,并且没有将货物 bin 目录添加到 PATH 中。
列出 $PATH 中的环境变量
让我们列出我们的所有环境变量 $PATH
使用 echo
命令。
$ echo $PATH
示例输出:
/home/sk/anaconda3/envs/rustenv/bin:/home/sk/anaconda3/condabin:/home/sk/.nvm/versions/node/v15.0.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
正如你在上面的输出中看到的,目录 ~/.cargo/bin/
在 $PATH 中不可用,因此无法使用其名称启动 Macchina 程序。 但是,我可以通过键入其完整路径来启动该程序,如下所示:
$ ~/.cargo/bin/macchina
为了从任何位置使用其名称运行程序,我们需要将其添加到 PATH 中,如下一节所示。
在 Linux 中将目录添加到 PATH
添加目录,例如 /home/sk/.cargo/bin/
, 在 $PATH 中,运行:
$ PATH=/home/sk/.cargo/bin:$PATH
请注意目录路径末尾的冒号 (:)。
现在再次列出环境变量使用 echo
命令:
$ echo $PATH
示例输出:
/home/sk/.cargo/bin:/home/sk/anaconda3/envs/rustenv/bin:/home/sk/anaconda3/condabin:/home/sk/.nvm/versions/node/v15.0.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
看? 这 ~/.cargo/bin
目录已添加到 $PATH
. 从现在开始,我可以通过简单地调用程序名称来启动安装在此目录中的任何程序。 无需提及完整路径!
请注意,这是暂时的。 一旦退出当前会话,环境变量就会消失。 要使更改永久化,请编辑 ~/.bashrc
文件:
$ nano ~/.bashrc
在最后添加以下行:
PATH=/home/sk/.cargo/bin:$PATH
按 CTRL+O
其次是 CTRL+X
保存文件并退出。
运行以下命令使更改立即生效:
$ source ~/.bashrc
如果要在系统范围内执行此操作,请将同一行添加到 /etc/profile
.
希望这可以帮助。
BASH环境变量LinuxLinux基础知识Linux命令Linux提示PATH