无法识别命令

问题描述 投票:0回答:1

我想问一个关于 Linux (AlmaLinux-9.2) 的可能非常简单的问题...

我解压了文件,我想执行二进制文件

nerdctl
。但是如果命令开头不加
./
我就做不到吗?

因为我需要把这个文件移动或链接到另一个文件夹

/usr/local/bin
,这样就可以全局使用了。
但是,如何在不添加
./
的情况下执行该文件?

linux centos containerd nerdctl almalinux
1个回答
0
投票

在Linux中,在当前目录中执行二进制文件之前需要使用

./
的原因与
PATH
环境变量有关。
PATH
变量告诉 shell 在哪些目录中搜索可执行文件。

命令前的

./
指示 shell 在当前目录中查找可执行文件。默认情况下,出于安全原因,当前目录 (
.
) 通常不属于
PATH
。如果是这样,恶意二进制文件可能会用目录中的常见命令名称进行伪装,并且您可能会无意中运行它们。

如果您想从任何位置运行

nerdctl
命令而不使用
./
前缀,您有以下几种选择:

  1. 移动或符号链接到

    $PATH
    中的目录: 大多数系统范围的二进制文件存储在
    PATH
    变量中包含的目录中,例如
    /usr/local/bin
    /usr/bin
    等。如果将二进制文件移动或符号链接到这些目录之一,则可以从任何地方调用它没有
    ./
    前缀。

    sudo mv nerdctl /usr/local/bin/
    

    sudo ln -s /path/to/your/nerdctl /usr/local/bin/nerdctl
    
  2. 修改

    PATH
    变量: 不太推荐这样做,因为它会引入上面提到的安全问题,但您可以将包含
    nerdctl
    的目录添加到
    PATH
    变量中。

    将此添加到您的

    ~/.bashrc
    ~/.zshrc
    (取决于您的 shell):

    export PATH=$PATH:/path/to/the/directory
    
© www.soinside.com 2019 - 2024. All rights reserved.