免费注册 查看新帖 |

Chinaunix

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

脚本中#!/bin/sh能否不写? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-03-24 14:45 |只看该作者

脚本中#!/bin/sh能否不写?

#通常用作注释,但是#!放在一起就标志着这是一个shell script,其后的路径指出了用来解释这个script的程序。
如果一个script只是一些普通linux指令的堆砌。那么#!可以略去不写。但通常我们遇到的都不是这种情况。
如果这个script中包含一些自定义的程序组件,比如说函数,变量等,#!便需要标注。
应该是这样,嗯。

论坛徽章:
0
12 [报告]
发表于 2005-03-24 15:17 |只看该作者

脚本中#!/bin/sh能否不写?

哦~~再次谢谢各位的热心帮助了

论坛徽章:
0
13 [报告]
发表于 2005-09-07 14:58 |只看该作者

脚本中#!/bin/sh能否不写?

不过,在我的系统上(SunOS5. 上,如果开头#! /bin/.....那一行整个都不写的话,不是用登陆shell(我的是tcsh)来执行的,而是用B shell来执行的。
如果那一行只留下#!的话,则是用登陆shell来执行的。
不知道是不是在linux 下和 UNIX下行为不同呢?
记得steves的那本书上说:“在系统碰到一个可执行文件时,是首先把它当作二进制机器指令文件来执行的,如不是(比如是shell脚本),那么它就尝试会用B shell来执行。”
这句话的前提是在登陆shell是b shell的情况下说的呢?还是不管登陆shell是那个,系统都是先尝试用B SHELL来执行?不管哪种理解,如何解释上面的现象呢?
还请各位指点。

论坛徽章:
0
14 [报告]
发表于 2005-09-07 16:01 |只看该作者

脚本中#!/bin/sh能否不写?

这个可能是不同的系统的shell的行为不同。solaris 2.5可能默认是没有指明用什么shell执行的脚本都是bshell的脚本,所以就用b shell就去执行了。我也是猜的,手头没有sun的机器

论坛徽章:
0
15 [报告]
发表于 2005-09-07 16:53 |只看该作者

脚本中#!/bin/sh能否不写?

不写也行,,直接将脚本文件CP到/bin下也可执行

论坛徽章:
0
16 [报告]
发表于 2005-09-08 12:48 |只看该作者

脚本中#!/bin/sh能否不写?

to sakulagi :
你说的倒有可能,改天我再在RedHat9上试一下。
不过如果我第一行只写“#!”,这下也没有指明用什么shell去执行,但它就不是用B shell来执行了,而是用我的登陆shell(tcsh)来执行了。这倒是有点奇怪。(还是在SunOS5. 8)的机器上。

论坛徽章:
0
17 [报告]
发表于 2012-08-22 11:05 |只看该作者
解惑贴!感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP