运行不带 ./ 的命令

运行不带 ./ 的命令

我试图理解一些对你们很多人来说可能很简单但对我作为日常 Windows 用户来说却相当令人困惑的事情。

我正在关注码头工人安装在 Mac OS X 上。

步骤之一是:

$ chmod +x boot2docker

下一步是使用 boot2docker,如下所示:

$ boot2docker init

但这对我不起作用。有效的是:

 $ ./boot2docker init

因此,本教程假设我需要隐式运行,./或者在 bash 中是否有办法避免键入该内容并执行某些内容?

答案1

不同之处在于 Windows 隐式地具有.路径,这是它从 DOS 继承的东西,DOS 始终是单用户系统。

Mac OS X 建立在 Unix 之上,这是一个多用户系统。出于安全原因,它没有.隐式存在于路径中。

.不在路径中时,要在当前目录中运行命令,必须在命令前加上前缀 ,./以便明确告诉 shell 您要在当前目录中运行命令。./无论是否.在路径中,该符号都适用。如果删除它,则仅当它位于路径中./时才起作用。.因此,文档通常会包含该./部分。

.包含在路径中的安全含义是什么?

假设您已键入cd ~joker进入joker的主目录。接下来,您键入ls以查看其中有哪些文件。如果.位于路径的开头,则joker其主目录中可能有一个名为 的脚本ls,该脚本可以对您的用户帐户执行任何操作。

如果.是路径中的最后一个条目,情况就不会那么糟糕。在前一场景中,您将运行真正的命令,而不是其主目录中的ls命令。joker但您可能会输错ls命令。你的手指可能会打滑,然后你就打字了ks。然后ks可能找不到任何前面的目录,但最终当 shell 到达它时可能会在的主目录中.找到命令。ksjoker

相关内容