为什么我需要 ./ 才能在 Mountain Lion 上运行命令?

为什么我需要 ./ 才能在 Mountain Lion 上运行命令?

可能重复:
给出路径时“/”,“./”,“../”代表什么?

为什么需要./在 Mountain Lion 上运行命令?

例如,当使用 mysql 时,我必须在终端中输入:

./mysql -u itsme -p

另外,我正在创建命令行应用程序并使我的文件可执行,并且我必须使用 运行该命令./,如下所示......

./myawesomeapp dothis

我知道./这意味着当前目录,但如果不使用它我怎样才能运行命令?

答案1

如果将包含二进制文件的目录放入PATH环境变量中,则无需提供路径即可调用它们(即./

我猜你可能使用 bash 作为你的 shell(你可以运行来检查echo $SHELL)。如果是这种情况,请将以下内容添加到你的.bashrc

export PATH=$PATH:/whatever/path/you/want/to/add

答案2

您必须在环境变量中列出的目录之一中安装可执行文件$PATH

echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

$PATH通过修改文件进行调整~/.profile

export PATH=$PATH:/Users/me/bin

您可以./通过添加到 来放弃总是.$PATH但这可能是一个安全问题——如果不是在您的个人机器上,那么当您在操作服务器时延续这个坏习惯时。

答案3

虽然可以将其添加.到 $PATH 变量中,但强烈建议不要这样做。如果您在文件系统中随意走动并输入一些您认为可以运行程序的内容(viemacslsps等),则本地目录中的文件将成为运行的候选文件。如果您运气不好,那根本不是您想要运行的程序 - 如果您以 身份运行root,那就更糟了,因为有人可能会添加一个执行ls与实际完全不同操作的本地文件ls(当然还有执行真正的 ls - 否则很明显它不是真正的 ls,用户将开始调查情况)。[1]

相反,您应该添加可执行文件所在位置的绝对路径,例如/projects/mycurrentprojects/bin- 或“相对于主目录”,例如~/bin- 如果您希望路径在所有情况下都有效,最好使用home\mats\bin[显然使用正确的用户名]。这样,只有特定目录中的文件才适用,无论您身在何处,只有位于这些特定目录中的程序才会被选为“可能运行的候选程序”。

[1] 是的,我意识到搜索顺序和其他各种因素在这里也很重要。但无论反对意见如何,添加“当前目录”通常都不是一个好主意。

相关内容