免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eelb123
打印 上一主题 下一主题

执行文件如a.out 执行的时候前面有个./ 怎么解释 [复制链接]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
11 [报告]
发表于 2008-11-04 18:29 |只看该作者
原帖由 xiyoubbs 于 2008-11-4 18:17 发表

cd到这个执行文件的路径,运行它的话是不需要加./的,直接a.out是可行的!如果不在当前路径下,不加./的话直接执行的话就会寻找环境变量中的路径

我的测试环境是fc9

那和我的系统不同。即使在当前目录不加./也会提示命令找不到

论坛徽章:
0
12 [报告]
发表于 2008-11-04 18:33 |只看该作者
原帖由 Godbach 于 2008-11-4 17:33 发表
不知出来的话回到相关的bin下面去找,找不到



你这个说法有问题。

关于shell解释器,每个解释器关于这部分的解释可能不同。如dos下,输入命令时会默认到当前目录下去找。

而BASH等系列SHELL并不是这样的习惯,如果不给出可执行文件的路径,SHELL解释器会到系统环境变量BIN,也就是$PATH指定的目录下去找,经常的情况是对应到  /bin, /usr/bin, /usr/local/bin 等等,当然你也可以通过修改环境变量增加更多。

原理:shell解释器要想执行一个可执行文件,就需要找到该文件的位置,要么你给绝对路径、要么你给相对路径,或者shell内建的规则,如$PATH下的文件。

而./这种方式给的是相对路径。

如果你为了习惯问题不喜欢./来指定,那你可以尝试:

#export PATH=$PATH:./

最好放到  ~/.bashrc 这类的配置文件中,以后用着都方便。  我是以BASH举例来说的。

[ 本帖最后由 samon_fu 于 2008-11-4 18:42 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-11-04 18:34 |只看该作者
环境变量,呵呵....
export PATH=$PATH:你程序的目录

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2008-11-04 18:45 |只看该作者
原帖由 samon_fu 于 2008-11-4 18:33 发表



你这个说法有问题。

关于shell解释器,每个解释器关于这部分的解释可能不同。如dos下,输入命令时会默认到当前目录下去找。

而BASH等系列SHELL并不是这样的习惯,如果不给出可执行文件的路径,SHEL ...

你这个说法有问题。
在 Linux 上,这件事和 shell 一点关系都没有。是 Kernel 在做。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2008-11-04 18:45 |只看该作者
如果缺省查找当前目录的话,会有安全问题。

论坛徽章:
0
16 [报告]
发表于 2008-11-04 19:01 |只看该作者
原帖由 flw 于 2008-11-4 18:45 发表
如果缺省查找当前目录的话,会有安全问题。

会么?

论坛徽章:
0
17 [报告]
发表于 2008-11-04 19:06 |只看该作者
四楼正解,如果不加路径,系统会默认进入bin(一般系统会默认跑到/usr/bin)里面去找,而你的a.out并不在那里,所以就找不到,加入./则是告诉系统在当前目录找。

论坛徽章:
0
18 [报告]
发表于 2008-11-04 19:27 |只看该作者
原帖由 节约用水 于 2008-11-4 19:01 发表

会么?



会的。

任何一本linux的书都会讲这个./

论坛徽章:
0
19 [报告]
发表于 2008-11-04 19:35 |只看该作者
呵呵,学习了

论坛徽章:
0
20 [报告]
发表于 2008-11-04 21:03 |只看该作者
在默认情况下,UNIX去/bin、/usr/bin等目录找可执行文件,而不在当前目录里找。
从DOS的眼光看,会觉得奇怪。其实,规范的是UNIX。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP