腳本首行中的 #! 注釋

注意:解釋器需在開頭第一行指定

#!注釋的是加載器(解釋器)的路徑什燕, 比如: #!/bin/bash就是說把腳本中的代碼指令都傳遞給/bin/bash :bin目錄中的bash解釋器來執(zhí)行。

mac:~ user01$ cd /bin
mac:~ user01$ ls
[       df          launchctl   pwd     test
bash    domainname  link        rm      unlink
cat     echo        ln          rmdir   wait4path
chmod   ed          ls          sh      zsh
cp      expr        mkdir       sleep
csh     hostname    mv          stty
date    kill        pax         sync
dd      ksh         ps          tcsh

除了使用 #!/bin/bash外级解,大部分的腳本中都習(xí)慣使用#!/usr/bin/env來指定路徑闰挡。

那么鹃觉,env到底有什么用呢酷鸦?

先結(jié)合實(shí)際使用中遇到的問題看看:

腳本解釋器在linux中可能被安裝于不同的目錄荆责,或者同一個(gè)軟件(比如Python滥比、perl)安裝有多個(gè)版本:

mac:~ user01$ which python
/usr/bin/python
mac:~ user01$ which python3
/usr/local/bin/python3
mac:~ user01$ which -a perl  
/root/perl5/perlbrew/perls/perl-5.26.1/bin/perl
/usr/bin/perl
  • python2版本和python3不僅目錄不同,還因?yàn)椴患嫒莸膯栴}使用的解釋器名稱也不相同做院,python表示版本2盲泛,python3表示版本3以上。

到底執(zhí)行哪一個(gè)解釋器键耕,取決于PATH環(huán)境變量內(nèi)路徑的排列順序:

mac:~ user01$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

PATH環(huán)境中寺滚,如果要使用perl顯然優(yōu)先執(zhí)行的是/root/perl5/...目錄下的perl-5.26.1版本。但是如果想要執(zhí)行一個(gè)程序在perl-5.26.1以下版本運(yùn)行屈雄,就可以使用:

mac:~ user01$ env PATH=/usr/bin perl xxx.pl

指定解釋器路徑的方式來執(zhí)行perl腳本村视。

綜合上述說明:

env是一個(gè)指令,可以指定解釋器的具體路徑酒奶,如果不指定具體路徑蚁孔,那么將根據(jù)PATH環(huán)境變量中的目錄順序去查找奶赔。同時(shí),env還規(guī)定一些系統(tǒng)環(huán)境變量杠氢。

mac:~ user01$ env  
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/zd/cw9zr66d65xcx_ylk5bkm1240000gn/T/
TERM_PROGRAM_VERSION=404.1
...... 省略很多 ......

實(shí)際開發(fā)中如果直接將解釋器路徑寫死在腳本里#!/usr/bin/perl站刑,可能在某些系統(tǒng)就會(huì)出現(xiàn)找不到解釋器而造成的兼容性問題。這時(shí)就可以通過env指令來解決這個(gè)問題:

示例: #!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl 

這種寫法可以讓你的腳本在不同的系統(tǒng)上都能適用鼻百。 env會(huì)在/usr/local/bin绞旅、/usr/bin${PATH}這2+N個(gè)目錄(${PATH}表示PATH環(huán)境變量中定義的目錄)中尋找perl來執(zhí)行的温艇。

-S-P參數(shù)解釋:

-P參數(shù):指定一些目錄去尋找perl這個(gè)程序因悲,
#!/usr/bin/env -P/usr/local/bin:/usr/bin perl的作用就是指定在/usr/local/bin和/usr/bin目錄下尋找perl。

為了讓程序更加的有可擴(kuò)展性中贝,可以寫成
#!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl囤捻,那么它除了在這兩個(gè)目錄尋找之外,還會(huì)在PATH變量中定義的目錄中尋找邻寿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝎土,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绣否,更是在濱河造成了極大的恐慌誊涯,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒜撮,死亡現(xiàn)場離奇詭異暴构,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)段磨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門取逾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苹支,你說我怎么就攤上這事砾隅。” “怎么了债蜜?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵晴埂,是天一觀的道長。 經(jīng)常有香客問我寻定,道長儒洛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任狼速,我火速辦了婚禮琅锻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己恼蓬,他們只是感情好沫浆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滚秩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淮捆。 梳的紋絲不亂的頭發(fā)上郁油,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音攀痊,去河邊找鬼桐腌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛苟径,可吹牛的內(nèi)容都是我干的案站。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼棘街,長吁一口氣:“原來是場噩夢啊……” “哼蟆盐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起遭殉,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤石挂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后险污,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痹愚,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蛔糯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拯腮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚁飒,死狀恐怖动壤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情飒箭,我是刑警寧澤狼电,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站弦蹂,受9級(jí)特大地震影響肩碟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凸椿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一削祈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦髓抑、人聲如沸咙崎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褪猛。三九已至,卻和暖如春羹饰,著一層夾襖步出監(jiān)牢的瞬間伊滋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工队秩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笑旺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓馍资,卻偏偏與公主長得像筒主,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸟蟹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容