2011-03-29 61 views
1

这是另一个(可能)noob问题。让我们假设我有一个用C语言编写的简单的1文件程序(称为myProg.c)。当我想在Linux/MacOSX中编译这个程序时,我输入“gcc -o haha​​ myProg.c”。生成的可执行文件现在名为“haha”。当我想运行这个程序时,我需要在控制台中输入“./haha”。在Linux/MacOSX中运行C程序

我需要做些什么才能停止输入“./”?我怎么才能确保只要输入“哈哈”,我的程序将被调用?我检查了文件“哈哈”的权限,它是可执行文件。我是否正确地认为“./”表示可执行文件的路径,即文件存在于当前目录(“。”)?

回答

5

当前目录在默认情况下不是来自unix派生操作系统的PATH的一部分。这是一种安全措施,您可以,但不应该变化在你的.bash_profile.bashrc

的理由不包括在路径中的当前目录修改路径:假设你是root,你有恶意用户。该用户创建例如在他的主目录中有一个ls可执行文件,它做的不好。如果您正在查看此用户需要做什么,并在他的主目录中键入ls,那么他将执行他的 ls。

如果你只想改变,添加PATH="${PATH}:.".bashrc.bash_profile

+0

感谢埃里克。这几乎可以回答我的问题。另一个问题,但。假设路径变量由操作系统以从左到右的方式处理。我们可以不添加当前目录“。”最后要确保这种风险情景(如答案中提到的)不会出现?或者,操作系统是否继续查找路径中提到的所有目录,然后选择离根目录最远的目录? – Neo 2011-03-29 13:14:05

+0

@CRK:找到的第一个被选中,所以把'.'放在最后可以降低风险。但它仍然是一个问题 - 当您尝试使用例如'mc'恰好没有安装在这个特定的系统上?或者你错误输入'ls'作为'lls'? – Erik 2011-03-29 13:17:30

+0

嗯..我现在明白.. :)再次感谢。 – Neo 2011-03-29 13:19:15