shell中第一行#!/bin/bash的作用


  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM