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前面少了一個"/"):
#!bin/ksh
....
在test環境里面,他是這樣執行的:
ksh test.sh
結果正確,沒有問題。
好,然后就布置到生產環境的crontab里面,結果shell沒跑成功。
PS: 如果腳本里面沒有寫#!...這一段,腳本是可以執行的,那么系統又是使用什么shell來執行的呢?我想應該是用戶的$SHELL這一環境變量來指定的那一個shell吧。所以我們的口號是:“要么不寫,要寫就不要寫錯!”
文章來源:http://blog.csdn.net/u011630575/article/details/48288275
