在Ubuntu中使用./运行二进制文件

时间:2008-11-04 19:51:55

标签: linux

我决定学习C++(我在工作中C编程),我一直在阅读一些教程(以及Stack Overflow上的大量帖子)。好的,所以我输入标准的C ++“hello word”,在我的GCC机器上用Ubuntu编译为“test”。

然后我尝试通过输入“test”并按Enter键来运行它。没有。事实证明我必须用“./test”运行它。好的,好的,我会从现在开始这样做。但为什么? “./”只是说我应该运行的是当前目录...当OS正在搜索要运行的东西时,当前目录不总是PATH的一部分吗?我可以这样做吗?

7 个答案:

答案 0 :(得分:10)

是的,当前目录不是PATH的一部分。你不希望它,因为那时你可能在一个目录中,你有一个你不知道的恶意程序。

如果你习惯于运行/ usr / bin / grep,但是你碰巧在一个目录中,那个坏人把grep的恶意副本放进去,这次你运行grep,然后你运行grep超出当前目录,而不是/ usr / bin / grep。

你当然可以在你的〜/ .profile或〜/ .bash_profile中添加./到你的PATH,但我不推荐它。

如果它让你感觉更好,15年前当我开始使用类Unix系统时,我也有同样的挫败感。

答案 1 :(得分:6)

您可以添加“。”到你的PATH,但在这种情况下这对你没有帮助 - “test”是一个内置的shell。

答案 2 :(得分:3)

不幸的是,有一个名为“test”的Unix命令......

答案 3 :(得分:1)

如果您经常运行命令行脚本,则可以设置command line alias以消除每次键入./的需要。

答案 4 :(得分:1)

即使当前目录位于$ PATH的最开头,'test'仍然不会在(大多数?)shell上运行它,因为'test'是一个shell内置命令。

答案 5 :(得分:0)

没有'。' PATH中的(当前目录)是次要安全措施。如果您愿意,可以随时添加它,尽管这不是最佳实践。

答案 6 :(得分:0)

如果不清楚,这是Windows与Unix / Linux不同的一个方面。在Windows上,当前目录隐含在路径中。