加“.”有什么用 (点)在路径变量中?

Hem*_*ish 2 path environment-variables

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:.
Run Code Online (Sandbox Code Playgroud)

以上两个路径变量有什么区别?

我发现这会像命令一样执行可执行文件,但我不确定。

Ste*_*itt 6

添加.到路径意味着 shell 会考虑当前目录中的可执行文件,因此您不再需要键入./前缀。在您的情况下,由于它是最后一个条目,因此只有在没有其他匹配项之前才会执行此类命令;例如,ls仍然会运行/bin/ls

通常推荐这样做的原因有几个(请参阅上面的链接):

  • 这可能不利于安全,因为有人可以将二进制文件留在您经常访问的目录中,并希望您不小心运行它——尽管.作为最后一个条目而不是第一个条目风险较小;
  • 在当前目录中运行命令 without./意味着将使用路径中的第一个匹配命令,不一定是当前目录中的命令。