我试图理解一些对你们很多人来说可能很简单但对我作为日常 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 到达它时可能会在的主目录中.
找到命令。ks
joker