免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2270 | 回复: 7
打印 上一主题 下一主题

还是不理解 a.out 和 ./a.out 的区别! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-16 12:52 |只看该作者 |倒序浏览
1
./a.out 可以,就是因为搜索了 PATH,那为什么 a.out 不搜索???

2.
我建立了一个shell script,1.sh,改权限为可执行
我 ./1.sh 执行了,我 mv 1.sh 1
我 ./1 执行了。
那 bash 怎么知道要用那个软件来调用这个东西呢?
通过搜索文件的二进制头来决定吗?


论坛徽章:
0
2 [报告]
发表于 2012-02-16 12:56 |只看该作者
回复 1# splendid12


   a的路径 path要包含      而且a要有x执行权限

论坛徽章:
0
3 [报告]
发表于 2012-02-16 12:57 |只看该作者
脚本开头  #!/bin/bash

论坛徽章:
0
4 [报告]
发表于 2012-02-16 12:59 |只看该作者
我问的是原理啊楼上的。。

为什么 a.out 不能执行,./a.out 就可以?

bash 通过搜索 PATH  以及  二进制文件的 elf 来决定文件给哪个软件调用吗?

论坛徽章:
20
CU大牛徽章
日期:2013-03-13 15:29:072015亚冠之阿尔希拉尔
日期:2015-09-12 09:33:562015年亚冠纪念徽章
日期:2015-09-22 17:12:202015亚冠之本尤德科
日期:2015-10-29 16:18:18神斗士
日期:2015-11-23 13:37:23青铜圣斗士
日期:2015-12-07 10:14:28平安夜徽章
日期:2015-12-26 00:06:3015-16赛季CBA联赛之佛山
日期:2016-01-18 08:59:06shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之同曦
日期:2016-11-03 14:43:552015七夕节徽章
日期:2015-08-21 11:06:17丑牛
日期:2014-12-30 16:06:17
5 [报告]
发表于 2012-02-16 13:21 |只看该作者
splendid12 发表于 2012-02-16 12:59
我问的是原理啊楼上的。。

为什么 a.out 不能执行,./a.out 就可以?


执行方式有以下几种:

绝对路径:  /XX/XX/a.out
相对路径:  ./a.out
加入PATH变量内:可直接  a.out

也可以通过bash执行:sh  a.out

论坛徽章:
0
6 [报告]
发表于 2012-02-16 13:25 |只看该作者
第一个问题我已经搞懂了,因为 相对路径 只是简写,可以看成是一个绝对路径。
所以如果直接执行 a.out 那么就会搜索 PATH。

那第二个问题,不同的可执行文件,ELF 头不一样,这个应该就是调用不同软件的依据吧。
可是具体是 ELF 那部分决定的呢?

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
7 [报告]
发表于 2012-02-16 14:04 |只看该作者
你把它放/bin下

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
8 [报告]
发表于 2012-02-16 21:33 |只看该作者
楼主没明白ELF是什么,ELF格式的文件,本身就是二进制的可执行程序了.
至于你说的1楼的那个sh文件是shell脚本,是由shell程序解释执行的,一般我们在脚本的第一行写需要的shell,比如:
  1. #!/bin/bash
  2. #!sed -f
复制代码
等等
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP