运行当前目录下的可执行文件,为什么要加上“./“在前面?
- 微风成长
- 帖子: 644
- 注册时间: 2008-12-14 18:43
- 联系:
- luojie-dune
- 帖子: 22033
- 注册时间: 2007-07-30 18:28
- 系统: Linux
- 来自: 空气中
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
乱猜个, 没有不行,没有就相当于 子文件夹了,有个 /也不行同理。所以就造了个 ./ 也对应 /.
瞎猜
瞎猜
- daf3707
- 论坛版主
- 帖子: 12732
- 注册时间: 2007-06-13 15:57
- 来自: 在他乡
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
PATH里不包含当前目录吧
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
./----明确指定为当前目录下的文件,省得再去查目录。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
海内生明月,天涯共此夕。
--------------------吾本独!
-
- 帖子: 1831
- 注册时间: 2009-04-03 15:10
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
这是由于直接输入可执行文件的文件名的时候,shell会在系统设置的一些默认路径下寻找这个可执行文件,如果没有,就会返回错误信息了,默认路径一般是/usr/bin,如果要执行当前目录下的可执行文件,就必须指定路径,也就是在可执行文件名称前面加上“./”
- kinzess
- 帖子: 319
- 注册时间: 2007-04-11 10:39
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
是没有当前路径,
也不推荐加上去,很容易引发安全问题,
例如当前目录刚好有个同名的木马就惨了..
也不推荐加上去,很容易引发安全问题,
例如当前目录刚好有个同名的木马就惨了..
- jioyo源
- 帖子: 3476
- 注册时间: 2008-10-08 13:48
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
默认只搜PATH里的,你不加路径,PATH里没有,他就认为没有这个文件……
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286
- xiajing
- 帖子: 30
- 注册时间: 2009-06-10 21:52
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
如果你想执行当前目录的这个文件,但PATH指向的文件夹下有与此文件同名的文件,不加./ 那就执行PATH指向的文件夹下的文件,
所以允许不加./就可执行的话,容易执行非当前目录下的文件,为避免该错误,所以要加./。
所以允许不加./就可执行的话,容易执行非当前目录下的文件,为避免该错误,所以要加./。
- ciciluter
- 帖子: 50
- 注册时间: 2009-08-19 21:51
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
正解。wangdu2002 写了:./----明确指定为当前目录下的文件,省得再去查目录。
. 当前目录
.. 当前目录的上一级目录
操作系统基本都这样默认的
- 微风成长
- 帖子: 644
- 注册时间: 2008-12-14 18:43
- 联系:
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
我记得好像是安全问题。
如果不是安全问题的话,完全可以做成Windows命令行的那种形式:不管path里还是当前目录里,只要有该文件就立刻被执行。
6楼好像有点这个意思,但太模糊。
谁能说说具体原因?
如果不是安全问题的话,完全可以做成Windows命令行的那种形式:不管path里还是当前目录里,只要有该文件就立刻被执行。
6楼好像有点这个意思,但太模糊。
谁能说说具体原因?
- 微风成长
- 帖子: 644
- 注册时间: 2008-12-14 18:43
- 联系:
Re: 运行当前目录下的可执行文件,为什么要加上“./“在前面?
想起来一点了:
我记得那篇文章是这样说的:
如果当前目录下的可执行文件与path默认目录里的文件重名的话,那么系统一定会先执行当前目录里的文件。
如果恰好是某个终端用户上传的一个和系统命令重名的文件,例如:cp,那么恰好管理员用户工作在这个目录下要使用cp命令的话,就会执行那个终端用户上传的cp文件。这样如果这个cp是木马的话,那么系统就会轻而易举的被夺取控制权,所以不安全。
为了解决这个问题,就在当前目录可执行文件名前加"./"用以区分系统命令,也就是默认path里的可执行文件名。
windows为什么没有这个问题呢?我想原因如下:
首先,windows不是一个多用户操作系统。windows不能让两个或两个以上的用户同时进行操作。
特别是GUI方面。所以在用户权限管理方面比较松懈。
其次,windows控制权不需要系统管理员权限来执行木马服务端就可以轻易获取。
再次,我想windows有更多严重的安全问题有待考虑,所以这种安全细节自然还没排上日程。
这是我的一点不成熟的看法,大家怎么看windows命令行设计的这种区别呢?
我记得那篇文章是这样说的:
如果当前目录下的可执行文件与path默认目录里的文件重名的话,那么系统一定会先执行当前目录里的文件。
如果恰好是某个终端用户上传的一个和系统命令重名的文件,例如:cp,那么恰好管理员用户工作在这个目录下要使用cp命令的话,就会执行那个终端用户上传的cp文件。这样如果这个cp是木马的话,那么系统就会轻而易举的被夺取控制权,所以不安全。
为了解决这个问题,就在当前目录可执行文件名前加"./"用以区分系统命令,也就是默认path里的可执行文件名。
windows为什么没有这个问题呢?我想原因如下:
首先,windows不是一个多用户操作系统。windows不能让两个或两个以上的用户同时进行操作。
特别是GUI方面。所以在用户权限管理方面比较松懈。
其次,windows控制权不需要系统管理员权限来执行木马服务端就可以轻易获取。
再次,我想windows有更多严重的安全问题有待考虑,所以这种安全细节自然还没排上日程。
这是我的一点不成熟的看法,大家怎么看windows命令行设计的这种区别呢?