分页: 1 / 1

运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 17:55
微风成长
我记得多年前曾经看过相关的报道。
可惜现在忘了,哪位达人帮忙解释下?
谢谢了。

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 18:05
luojie-dune
乱猜个, 没有不行,没有就相当于 子文件夹了,有个 /也不行同理。所以就造了个 ./ 也对应 /.

瞎猜

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 18:06
daf3707
PATH里不包含当前目录吧

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 18:07
wangdu2002
./----明确指定为当前目录下的文件,省得再去查目录。

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 18:07
dshbusiness
这是由于直接输入可执行文件的文件名的时候,shell会在系统设置的一些默认路径下寻找这个可执行文件,如果没有,就会返回错误信息了,默认路径一般是/usr/bin,如果要执行当前目录下的可执行文件,就必须指定路径,也就是在可执行文件名称前面加上“./”

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 19:53
kinzess
是没有当前路径,
也不推荐加上去,很容易引发安全问题,
例如当前目录刚好有个同名的木马就惨了..

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 20:06
jioyo源
默认只搜PATH里的,你不加路径,PATH里没有,他就认为没有这个文件……

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 20:39
xiajing
如果你想执行当前目录的这个文件,但PATH指向的文件夹下有与此文件同名的文件,不加./ 那就执行PATH指向的文件夹下的文件,
所以允许不加./就可执行的话,容易执行非当前目录下的文件,为避免该错误,所以要加./。

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 22:10
ciciluter
wangdu2002 写了:./----明确指定为当前目录下的文件,省得再去查目录。
正解。
. 当前目录
.. 当前目录的上一级目录

操作系统基本都这样默认的

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 22:48
微风成长
我记得好像是安全问题。
如果不是安全问题的话,完全可以做成Windows命令行的那种形式:不管path里还是当前目录里,只要有该文件就立刻被执行。
6楼好像有点这个意思,但太模糊。
谁能说说具体原因?

Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?

发表于 : 2009-08-26 23:07
微风成长
想起来一点了:
我记得那篇文章是这样说的:
如果当前目录下的可执行文件与path默认目录里的文件重名的话,那么系统一定会先执行当前目录里的文件。
如果恰好是某个终端用户上传的一个和系统命令重名的文件,例如:cp,那么恰好管理员用户工作在这个目录下要使用cp命令的话,就会执行那个终端用户上传的cp文件。这样如果这个cp是木马的话,那么系统就会轻而易举的被夺取控制权,所以不安全。
为了解决这个问题,就在当前目录可执行文件名前加"./"用以区分系统命令,也就是默认path里的可执行文件名。

windows为什么没有这个问题呢?我想原因如下:
首先,windows不是一个多用户操作系统。windows不能让两个或两个以上的用户同时进行操作。
特别是GUI方面。所以在用户权限管理方面比较松懈。
其次,windows控制权不需要系统管理员权限来执行木马服务端就可以轻易获取。
再次,我想windows有更多严重的安全问题有待考虑,所以这种安全细节自然还没排上日程。

这是我的一点不成熟的看法,大家怎么看windows命令行设计的这种区别呢?