免费注册 查看新帖 |

Chinaunix

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

sh xxx.sh 与 ./xxx.sh 的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-05 08:48 |只看该作者 |倒序浏览
在执行xxx.sh文件时,有两种方法:
sh xxx.sh./xxx.sh
这两种方法有什么区别吗?
因为有时候会遇到这种情况:
使用命令./xxx.sh,会报错误
bash: ./RUN_setup.sh: 没有权限
但使用命令sh xxx.sh则一切正常。

论坛徽章:
0
2 [报告]
发表于 2006-07-05 09:11 |只看该作者
大概前者用你自己的shell执行一个脚本,后者要执行脚本规定的shell吧?

论坛徽章:
1
巳蛇
日期:2014-12-29 11:22:41
3 [报告]
发表于 2006-07-05 09:24 |只看该作者
如果xx.sh有x位的话,两个命令是一样的
chmod +x xx.sh

论坛徽章:
0
4 [报告]
发表于 2006-07-05 09:24 |只看该作者
xxx.sh没有加上执行权限
chmod +x xxx.sh

论坛徽章:
0
5 [报告]
发表于 2006-07-05 09:52 |只看该作者
这个问题的解决方法我是知道的,
但我就想知道为什么会产生这种差别。

如果xx.sh有x位的话,两个命令是一样的
请问是什么意思?

论坛徽章:
0
6 [报告]
发表于 2006-07-05 09:59 |只看该作者
原帖由 jiangshachina 于 2006-7-5 08:48 发表
bash: ./RUN_setup.sh: 没有权限

说的都很明白了

论坛徽章:
0
7 [报告]
发表于 2006-07-05 10:02 |只看该作者

那也应该还有更深层次的原因吧。
为什么一个权限不足,另一个权限足够呢。

论坛徽章:
0
8 [报告]
发表于 2006-07-05 11:53 |只看该作者
man sh
一定可以找到答案

论坛徽章:
0
9 [报告]
发表于 2006-07-05 13:51 |只看该作者
还是有区别的,我也是初学,还请高人指点

./file.sh  (shell里的变量是不输出的)

sh file.sh  (shell的变量是可以输出的,即echo $variable 可以返回变量值)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2006-07-05 14:05 |只看该作者
原帖由 soccer 于 2006-7-5 13:51 发表
还是有区别的,我也是初学,还请高人指点

./file.sh  (shell里的变量是不输出的)

sh file.sh  (shell的变量是可以输出的,即echo $variable 可以返回变量值)


錯的. 還好你說是初學的...  ^_^

首先, ./file.sh 需要有 x permission, 而sh file.sh 不需要.
如果 file.sh 裡面有指定 interpreter (在第一行用 #!/path) 的話,
兩者都會用指定的 interpreter 作 sub shell 去執行 file.sh 裡面的命令.
但如果沒有指定 interpreter, 那 sh file.sh 則會用 sh 作 sub shell.
至於 ./file.sh , 那要看你當前的 shell 是甚麼類型的:
有的 shell 用當前的 shell 作 sub shell, 有些則指定預設的 shell 作 sub shell.

但無論如何, sub shell 的環境(如變量)是不會影響當前 shell 的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP