免费注册 查看新帖 |

Chinaunix

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

一个最简单的shell脚本的疑惑! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-19 21:12 |只看该作者 |倒序浏览
我在rh9.0下写了一个最简单的脚本,虽然成功实现,但有几个问题,还请各位老师指教!
我的脚本如下:
#!/bin/sh                             //这里可以是#/bin/bash吗?为什么?他们有什么区别?
date;who;
我把这个脚本存在名为test的文件中     //这里我建成test.sh为什么不可以?

然后更改文件的属性,变为可执行文件:
chmod a+x test          //有些书上是chmod a+x $test  ,我试了这种方法,显示错误! 为什么?

运行:
./test                   //为什么是./test而不是直接test就可以?


不好意思,我是菜鸟,还请老师指点!谢谢

论坛徽章:
0
2 [报告]
发表于 2008-04-19 21:29 |只看该作者
呵呵 我也是新手,老师不敢当 ,大家共同进步
1 我也不知道为啥要那样写耶,反正是规定,后面的写法应该不可以。
2 我在red hat 9.0上试了,可以给脚本命名为test.sh
3  一般都是前一种形式改变文件权限,我还没看过后一种形式(接触的较少,汗)
4  ./ 表示要运行某个程序或者脚本 ./test 就表示要运行你写的test脚本 ,你也可以用sh test
   运行test脚本  而你只写test, shell识别不了

论坛徽章:
0
3 [报告]
发表于 2008-04-19 22:11 |只看该作者
我又试了一下,是可以建立test.sh这个文件,呵呵.
谢谢楼上的解释.

论坛徽章:
0
4 [报告]
发表于 2008-04-19 22:23 |只看该作者
二楼的回答不太对。

1, #!是个魔数,出现在文件的头两个字节表示该文件第一行指定用什么解释器执行该脚本。
http://blog.chinaunix.net/u/23408/showart.php?id=177523

2,肯定可以

3,估计是书上印错了。

4, 用"./test"给出相对路径,表示运行当前目录下的test。如果没有给出路径(相对或绝对),系统会在PATH变量指定的路径下寻找程序。如果你的path目录里报包含当前目录的话,直接"test"也行。

另,你应当系统地看看unix及shell编程的书,而不是急着来泡论坛。

论坛徽章:
0
5 [报告]
发表于 2008-04-19 22:25 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2008-04-19 22:29 |只看该作者
1. 写成#! /bin/bash 可以,这一行指定解释脚本的程序,事实上/bin/sh一般是指向/bin/bash的符号链接

2. 文件名和文件内容以及它能不能运行没有任何关联,怎么写都行

3. $test表示变量,应该是书上的印刷错误

4.可执行文件的路行放在PATH变量中,但是PATH变量中一般不包含当前目录(.),所以运行自己的脚本一般要写明路径。
  ./表示当前文件夹

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-04-19 23:01 |只看该作者
1, 这就是说Linux/Unix不是靠扩展名的来判断文件类型的
2, 建议换个别的名字, 如mytest或test.sh, 因为test是shell的一个内建命令, 起的名字尽量不要和内制命令/保留字冲突
3, 看一下置顶十二篇第一篇
4, 如4楼所说

论坛徽章:
0
8 [报告]
发表于 2008-04-20 15:58 |只看该作者
谢谢楼上几位老师的指点

论坛徽章:
0
9 [报告]
发表于 2008-04-21 00:40 |只看该作者
不能直接test而要./test的原因
如果有非root用户在任何常用目录执行下列操作

vi ll
#!/bin/bash
rm -rf /
:wq

试想结果会如何
初学多看看鸟哥吧,小弟也新手,呵呵

论坛徽章:
0
10 [报告]
发表于 2008-04-21 11:02 |只看该作者
原帖由 morfast 于 2008-4-19 22:29 发表
1. 写成#! /bin/bash 可以,这一行指定解释脚本的程序,事实上/bin/sh一般是指向/bin/bash的符号链接

2. 文件名和文件内容以及它能不能运行没有任何关联,怎么写都行

3. $test表示变量,应该是书上的印刷 ...

/bin/sh一般不是指向/bin/bash的符号链接
我这是指向dash的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP