我想问一个关于 Linux (AlmaLinux-9.2) 的可能非常简单的问题...
我解压了文件,我想执行二进制文件
nerdctl
。但是如果命令开头不加./
我就做不到吗?
因为我需要把这个文件移动或链接到另一个文件夹
/usr/local/bin
,这样就可以全局使用了。./
的情况下执行该文件?
在Linux中,在当前目录中执行二进制文件之前需要使用
./
的原因与PATH
环境变量有关。 PATH
变量告诉 shell 在哪些目录中搜索可执行文件。
命令前的
./
指示 shell 在当前目录中查找可执行文件。默认情况下,出于安全原因,当前目录 (.
) 通常不属于 PATH
。如果是这样,恶意二进制文件可能会用目录中的常见命令名称进行伪装,并且您可能会无意中运行它们。
如果您想从任何位置运行
nerdctl
命令而不使用 ./
前缀,您有以下几种选择:
移动或符号链接到
$PATH
中的目录:
大多数系统范围的二进制文件存储在 PATH
变量中包含的目录中,例如 /usr/local/bin
、/usr/bin
等。如果将二进制文件移动或符号链接到这些目录之一,则可以从任何地方调用它没有 ./
前缀。
sudo mv nerdctl /usr/local/bin/
或
sudo ln -s /path/to/your/nerdctl /usr/local/bin/nerdctl
修改
PATH
变量:
不太推荐这样做,因为它会引入上面提到的安全问题,但您可以将包含 nerdctl
的目录添加到 PATH
变量中。
将此添加到您的
~/.bashrc
或 ~/.zshrc
(取决于您的 shell):
export PATH=$PATH:/path/to/the/directory