.bashrc 中的这个 PATH 语句有什么作用?

.bashrc 中的这个 PATH 语句有什么作用?

我完成了 OpenMPI 的安装,在该过程结束时,它要求执行以下操作:

Then openmpi is installed at the directory indicated by prefix. Next,
add the following two lines to your ./bashrc file, which is located
at your home directory.

PATH=$PATH:/usr/local/openmpi-3.0.0/bin export PATH

When you open the terminal window next time, you can use openmpi. Make it sure by typing

$which mpirun

我需要做什么?为什么需要这一步?

答案1

PATH 是一个 shell 变量,它将在 shell 中执行命令,而无需提供安装位置的完整路径。要了解当前的命令路径,您可以在 shell 中运行以下命令

# echo $PATH

您已将软件安装在不同的路径 /usr/local/openmpi-3.0.0/bin 上,您的 openmpi 完整命令路径为 /usr/local/openmpi-3.0.0/bin/openmpi

因此,如果将文件夹 /usr/local/openmpi-3.0.0/bin 添加到 PATH 变量中,则只需将命令执行为 .

# openmpi

否则你需要执行它

# /usr/local/openmpi-3.0.0/bin/openmpi

答案2

有几件事:首先,就像评论者 @Artem S. Tashkinov 所说,(在某些 shell 中)需要export PATH换行,因为它是一个单独的命令。它说将新设置PATH为环境变量。环境变量是一种变量(动态值),它不仅被一个程序使用,而且被整个环境使用。作为简化,认为环境 = shell(感谢 ilkkachu 更正)。

其次,为了更直接地回答您的问题,$PATH是一个存储可执行文件(程序)位置的环境变量。您只需附加/usr/local/openmpi-3.0.0/bin$PATH,这样,如果您mpirun在终端中键入,shell 就知道它存在/usr/local/openmpi-3.0.0/bin并可以运行它。冒号之前的部分是$PATHalready的内容;冒号的意思是“将后面的内容附加到前面的内容”; the 是/usr/local/openmpi-3.0.0/bin要附加的内容。

你可能会问,为什么我需要美元?简单的答案是 shell 引用已经用 $ 定义的变量。例如,如果我运行:

NAME='BOB'

echo $NAME

shell 会打印BOB,而

echo NAME

会导致外壳打印NAME

最后,您不想只更改$PATH可执行文件的主目录(而不是附加),否则系统将不知道其他程序所在的位置。

相关内容