shell 中
#!/bin/bash
#!/bin/ksh
这些东西是有用的,这些不是注释符,而是说明下面的脚本是在什么 shell 下面运行的,
并且以该 shell 环境来执行脚本,一个简单的例子
#!/bin/ksh
export LOG=/tmp/test.log
exec >> $LOG 2>&1
echo "a test message!"
exit 0
在 AIX 下面编辑好该脚本后直接执行,运行成功在/tmp 下面会有一个 test.log 文件生
成,文件内容为"a test message!"
如果我们把上面的
#!/bin/ksh
换成
#!/bin/csh
执行脚本,则会有如下报错:
export 不是 shell 命令
即,在 csh 里面没有 export 这个命令,所以会报错
一同事犯的一个简单的错误,在一个 shell 脚本里面其开头是这样的:
#!bin/ksh
....
在 test 环境里面,他是这样执行的:
ksh test.sh
结果正确,没有问题
好,然后就布置到生产环境的 crontab 里面,结果 shell 没跑成功
PS: 如果脚本里面没有写#!...这一段,脚本是可以执行的,那么系统又是使用什么
shell 来执行的呢?我想应该是用户的$SHELL 这一环境变量来指定的那一个 shell 吧
评论0
最新资源