如何为 SSH 定义 MPICH 的路径?

如何为 SSH 定义 MPICH 的路径?

我有毕业论文并按照本手册中的步骤进行:仅需 13 个步骤即可构建 Beowulf 集群

我对第 11 步有疑问:

现在我们将为 SSH 定义 MPICH 的路径。运行以下命令:

sudo echo /home/mpiuser/mpich1/bin >> /etc/environment

但上述命令返回此输出:

bash: /etc/environment: Permission denied

如何解决这个问题呢?

答案1

您的命令不起作用,因为 sudo 未执行输出 ( >/ >>) 的重定向。有几种方法可以解决这个问题。例如:

  • 您可以使用管道|)并由sudo tee带选项的命令--append

    echo /home/mpiuser/mpich1/bin | sudo tee -a /etc/environment
    
  • 另一种方法是运行整个命令sudo

    sudo bash -c 'echo /home/mpiuser/mpich1/bin >> /etc/environment'
    

结果/etc/environment遗嘱的内容看起来像这样:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
/home/mpiuser/mpich1/bin

参考:


编辑1:


但是我认为这行新内容/etc/environment本身不会产生任何作用。要使此“路径”有意义,必须将其附加到$PATHenvvar 的值中。

Ubuntu 文档

变量扩展在 中不起作用/etc/environment

因此,要通过单个命令附加/home/mpiuser/mpich1/bin到的值$PATH,您可以使用以下命令:

cat /etc/environment | sed 's/\"$/:\/home\/mpiuser\/mpich1\/bin\"/' | sudo tee /etc/environment

在哪里:(1) cat /etc/environment将打印文件的内容;(2) sed '...'将用 ; 替换最后一个引号 ( ") :/home/mpiuser/mpich1/bin"; (3)sudo tee /etc/environment将重写该文件。

结果/etc/environment遗嘱的内容看起来像这样:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/主页/mpiuser/mpich1/bin

请滚动到末尾。

参考:


编辑2:


我做了一些研究,发现了一些建议,比如

但是,如果您需要为所有用户设置该环境变量,我仍然不建议您修改,/etc/environment而是创建一个文件名以.shin结尾的文件/etc/profile.d。该 /etc/profile脚本和中的所有脚本/etc/profile.d都是每个用户个人脚本的全局等效脚本~/.profile,并在所有 shell 初始化期间作为常规 shell 脚本执行。

请避免修改系统文件。相反,您应该放置一个可执行脚本/etc/profile.d(此处的脚本会为每个用户执行)来更改$PATH值。

根据这些建议,假设您要创建一个名为的文件mpich-path.sh,并将其放置在目录中/etc/profile.d/。这可以通过以下命令完成:

echo 'export PATH="$PATH:/home/mpiuser/mpich1/bin"' | sudo tee /etc/profile.d/mpich-path.sh

结果新文件的内容将如下所示:/etc/profile.d/mpich-path.sh

export PATH="$PATH:/home/mpiuser/mpich1/bin"

注销并重新登录系统并输入echo $PATH以检查结果。


编辑3:


我不知道您所遵循的手册中的其他步骤,但除了步骤 11 之外,步骤 10 似乎也不太清楚。

这部分:

export PATH=/home/mpiuser/mpich1/bin:$PATH    # assigns a new value and exports the variable
export PATH                                   # exports the variable

必须是:

PATH=/home/mpiuser/mpich1/bin:$PATH           # assigns a new value
export PATH                                   # exports the variable

要不就:

export PATH=/home/mpiuser/mpich1/bin:$PATH    # assigns a new value and exports the variable

并且会产生与步骤11相同的结果。所以这部分是不必要的。

这里的新内容是这部分:

LD_LIBRARY_PATH="/home/mpiuser/mpich1/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

但是,也许,它可以被包含到我们上面创建的文件中。/etc/profile.d/mpich-path.sh

相关内容