3

我确实尝试在网上找到答案,但不幸的是空手而归。结合其他关键字搜索“./”会带来很多点击,但没有任何帮助...

无论如何,你可能会说,我对 MacOs 相当陌生。我正在从 shell 运行 mongo。我 cd 进入 /bin 文件夹并使用以下命令启动 mongo 守护进程:

'./mongod'

.

如果我只是输入“mongod”,我会收到以下错误:

'-bash: mongod: 找不到命令'

什么是

'./'

在 './mongod' 中代表什么?为什么需要它?为什么我不能通过键入 mongod 来执行 mongo。毕竟,我在正确的目录中。

4

2 回答 2

6

毕竟,我在正确的目录中

但该目录不在PATH. 问题的要点是,当 shell 想要执行某事时,它会查看目录列表(在名为 的变量中指定PATH)。并且当前目录不在该列表中

于 2012-08-17T21:08:39.590 回答
2

正如cnicutarPATH的回答中所解释的那样,shell 会尝试将您输入的命令与环境变量中列出的目录中的可执行文件相匹配。

尽管您可以将当前目录添加到 . PATH,但这可能不是一个好主意。这篇文章给出了 Linux 默认不添加它的一些很好的理由:

它是一种堵住可能存在的安全漏洞的措施。您不能在当前目录中运行命令而不专门调用它们。

即./myscript.sh

为了阻止讨厌的人编写恶意的 shell 脚本,请将脚本放在无害的位置,例如 /tmp 并获取 root 来运行脚本。root 会运行一个邪恶的脚本吗?如果脚本被命名为 'ls' 并且 root 做了一个列表,脚本会自动运行。

于 2012-08-17T21:21:20.980 回答