免费注册 查看新帖 |

Chinaunix

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

./程序名 和用/home/coco/程序名 跑一个程序有什么不同 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-20 17:13 |只看该作者 |倒序浏览
比如我写了一个程序,在程序中要打开文件名为a的文件,我用./程序名 运行一切正常,但是如果使用实际路径/home/coco/程序名 程序有问题,我在程序中打开文件的路径用的是相对路径

论坛徽章:
0
2 [报告]
发表于 2010-01-20 17:18 |只看该作者
There is nothing to do with whether you are using absolute path or relative path for executing your program. You just only need to make sure you are running from where the 'a' file locate !!!

论坛徽章:
0
3 [报告]
发表于 2010-01-20 17:19 |只看该作者
这个就涉及到在写shell脚本中绝对路径和相对路径的问题。一般会这样做:
1. basedir=`dirname $0`取得你当前运行的路径。
2. 对一些特定文件读写最好使用绝对路径,可以在脚本前写入到一个变量中。如:
TestFile_Path=/home/yazi
TestFile_Name=${TestFile_Path}/test.txt

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2010-01-20 17:21 |只看该作者
用绝对路径跑的时候,程序可能会找不到a文件在什么地方。

论坛徽章:
0
5 [报告]
发表于 2010-01-20 17:28 |只看该作者
原帖由 nhw_cs 于 2010-1-20 17:18 发表
There is nothing to do with whether you are using absolute path or relative path for executing your program. You just only need to make sure you are running from where the 'a' file locate !!!



换句话说, 你可以使用绝对路径跑程序, 但要保证这个程序在A文件所在的相对路径下跑! 你的明白?

所以你出现的错误与你是否用绝对路径跑程序没有任何关系!!!

论坛徽章:
0
6 [报告]
发表于 2010-01-20 17:47 |只看该作者

回复 #4 Shell_HAT 的帖子

我对这个不是太懂
为什么会有这种情况呢
已经告诉绝对路径了还找不到??想不通
程序中的相对路径是怎么相对的
1 相对父shell
2相对执行程序路径


[ 本帖最后由 ghp268 于 2010-1-20 17:51 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2010-01-20 17:51 |只看该作者
原帖由 ghp268 于 2010-1-20 17:47 发表
我对这个不是太懂
为什么会有这种情况呢
已经告诉绝对路径了还找不到??想不通



张三要通过李四找王五, 张三知道李四的联系方式, 但李四把王五的联系方式弄丢了, 你说张三能找到王五么?

论坛徽章:
0
8 [报告]
发表于 2010-01-20 17:57 |只看该作者
程序中最好用绝对路径,./程序 执行成功是因为你的文件a也在.目录下

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2010-01-20 18:02 |只看该作者

回复 #6 ghp268 的帖子

实际路径/home/coco/程序名,它只是告诉shell你要执行的程序在什么地方。
程序执行的时候会在你的当前目录(pwd)下面查找文件a,如果你的当前目录不是程序所在目录,程序就找不到文件a了。

论坛徽章:
0
10 [报告]
发表于 2010-01-21 00:01 |只看该作者
如果你理解了工作目录/当前目录的话,可能更容易理解上诉问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP