Shell编程关于Sha-Bang(#!)
生活随笔
收集整理的這篇文章主要介紹了
Shell编程关于Sha-Bang(#!)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
轉載自:http://blog.chinaunix.net/uid-26657936-id-3066136.html
Q. #!的名字為什么叫Sha-Bang?
A. Sha-Bang是Sharp和Bang的組合詞。Sharp for #, Bang for ! 類似的情況是,C#通常被稱為C Sharp
Q. Sha-Bang(#!)是不是注釋?
A. 不是注釋。Sha-Bang(#!)所在行的作用是告知該腳本使用的是哪種命令解釋器,并不是可有可無的。雖然很多情況下省略了Sha-Bang(#!)仍然能夠運行腳本,這是由于系統(tǒng)在這種情況下是默認使用了當前命令行解釋器的
Q. Sha-Bang(#!)的編寫有什么規(guī)范?
A. Sha-Bang(#!)應該位于腳本的第一行,并且頂格填寫,否則都是錯的,即使Sha-Bang之前的內容都是注釋,這種錯誤是常見的,而且不易發(fā)現(xiàn)的,因為此時Sha-Bang(#!)所在行實際上是不起效的,系統(tǒng)使用了默認的命令行解釋器
Q. Sha-Bang(#!)在同一個腳本中可以出現(xiàn)幾次?
A. 只有第一行的Sha-Bang(#!)會生效,其余的會視為注釋
Q. 為什么推薦這種寫法:#!/bin/env perl?
A. 因為這是有利于移植腳本到其它平臺的寫法,解釋器的默認安裝路徑在各個操作系統(tǒng)是不太一樣的,有的是/bin/,有的是/usr/bin/,甚至有可能是用戶自定義的路徑,使用env就基本上能夠通用了。雖然env也有可能在/bin/或者/usr/bin/中,但通常的情況是在這兩個路徑下都有env,或者其中一個是另一個的符號鏈接
最后提醒一下,有時候設定的cronjob異常,但是命令行能夠執(zhí)行成功,請先檢查一下Sha-Bang(#!)是否合法,然后檢查是否缺少了必須的環(huán)境變量,命令行能夠執(zhí)行成功可能是利用了默認的命令行解釋器和環(huán)境變量。
總結
以上是生活随笔為你收集整理的Shell编程关于Sha-Bang(#!)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xshell显示中文乱码问题
- 下一篇: SUID SGID