[问题]为什么在命令行执行可执行文件,在文件名前要加"./" [已解决]

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
findparadise
帖子: 256
注册时间: 2007-07-06 14:16

[问题]为什么在命令行执行可执行文件,在文件名前要加"./" [已解决]

#1

帖子 findparadise » 2008-01-01 20:03

举例,目录里面有个可执行文件叫abc
要执行必须输入./abc
要在DOS里,直接输入abc.exe 就能运行了。
很奇怪啊,高手讲解一下吧。
上次由 findparadise 在 2008-01-01 22:09,总共编辑 1 次。
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

#2

帖子 stlxv » 2008-01-01 20:07

因为.不在搜索路径当中嘛。
在DOS中,连.exe都可以省略,直接abc就行了。因为exe是DOS中的扩展名。
PHP是最好的语言!不服来战!
头像
findparadise
帖子: 256
注册时间: 2007-07-06 14:16

#3

帖子 findparadise » 2008-01-01 20:49

没懂。明明程序就在当前目录下,还非要来个./
我经常直接输入程序名,结果告诉我没找到这个程序,害的我以为拼错了,查半天,最后才想起来要加./
GodPig
帖子: 240
注册时间: 2007-04-27 23:07

#4

帖子 GodPig » 2008-01-01 21:14

在Linux下面并不默认搜索当前上当,它只在PATH所指定的路径中搜索
你如果把当前路径加到里面就可以省略了
头像
findparadise
帖子: 256
注册时间: 2007-07-06 14:16

#5

帖子 findparadise » 2008-01-01 21:19

明白了,谢谢! PATH在哪里设定? 我只知道W里面在我的电脑->属性里面设 :oops:
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#6

帖子 iblicf » 2008-01-01 21:20

:) , 你试想想,如果系统下有2个,或更多的 abc 可执行文件,那系统调哪个呢?
而且,如果随便某个目录下的的可执行文件,都可以不加 ./ 显式的告诉系统,就可以执行的话,那岂不是乱套了,病毒,木马,恶意程序随便执行了?

so , 这个也是 *nix 安全性考虑,

echo $PATH 列出来的目录,可以不用 +路径执行, 这就是为什么 ls , 之类的能直接执行,试想,如果有个人做了个病毒叫 ls , 放在你目录下,如果你执行 ls ,, 其实你是想用 /bin/ls , 可是当前目录的病毒 ls 被你执行了,可怕不 ?
头像
yangyuruc
帖子: 385
注册时间: 2007-09-26 17:23
来自: 云南-香格里拉

#7

帖子 yangyuruc » 2008-01-01 21:43

findparadise 写了:明白了,谢谢! PATH在哪里设定? 我只知道W里面在我的电脑->属性里面设 :oops:
gedit ~/.profile

PATH=$PATH:.
export PATH
打个点(.)把当前目录加入path
上次由 yangyuruc 在 2008-01-01 21:46,总共编辑 3 次。
头像
晶晶守护神
帖子: 705
注册时间: 2007-12-02 14:09

#8

帖子 晶晶守护神 » 2008-01-01 21:43

PATH在 envirement里面设定 和 xp 一样的 方法 ~~ ./ 就是表示当前目录的意思~~~~~ 加上以后就可以了~~
我也加了的~~方便才重要
悟以往之不鉴,知来者之可追
识迷途其未远 觉今是而昨非
头像
findparadise
帖子: 256
注册时间: 2007-07-06 14:16

#9

帖子 findparadise » 2008-01-01 22:10

OK了。谢谢各位。
回复