无法识别命令

Command cannot be recognized

提问人:Wanderer 提问时间:8/6/2023 最后编辑:JonasWanderer 更新时间:9/22/2023 访问量:38

问:

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

我解压缩了文件,我想执行二进制文件。但是,如果我不在命令的开头添加,我就做不到?nerdctl./

enter image description here

这是因为我需要将此文件移动或链接到另一个文件夹,以便可以全局使用。
但是,如何在不添加的情况下执行文件?
/usr/local/bin./

Linux CentOS containerd nerdctl almalinux

评论


答:

0赞 miloserdow 8/6/2023 #1

在 Linux 中,在当前目录中执行二进制文件之前需要使用的原因与环境变量有关。该变量告诉 shell 在哪些目录中搜索可执行文件。./PATHPATH

before a 命令指示 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 变量: 不建议这样做,因为它可能会引入上述安全问题,但您可以将包含的目录添加到变量中。nerdctlPATH

    将此添加到您的 OR(取决于您的 shell):~/.bashrc~/.zshrc

    export PATH=$PATH:/path/to/the/directory