#! /usr/bin/env在腳本中的作用

#!/usr/bin/env 
在linux的一些bash的腳本,需在開頭一行指定腳本的解釋程序,如: 
#!/usr/bin/env python 
再如: 
#!/usr/bin/env perl 
#!/usr/bin/env zimbu 
#!/usr/bin/env ruby 
但有時候也用 
#!/usr/bin/python 
和 
#!/usr/bin/perl 
那麼 env到底有什麼用?何時用這個呢? 
腳本用env啓動的原因,是因爲腳本解釋器在linux中可能被安裝於不同的目錄,env可以在系統的PATH目錄中查找。同時,env還規定一些系統環境量。 而如果直接將解釋器路徑寫死在腳本里,可能在某些系統就會存在找不到解釋器的兼容性問題。有時候我們執行一些腳本時就碰到這種情況。

這種寫法主要是爲了讓你的程序在不同的系統上都能適用。 不管你的perl是在/usr/bin/perl還是/usr/local/bin/perl,#!/usr/bin/env perl會自動的在你的用戶PATH變量中所定義的目錄中尋找perl來執行的。 

Probably the most common use of env is to find the correct interpreter for a script, when the interpreter may be in different directories on different systems.  The following example will find the `perl' interpreter by searching through the directories specified by PATH. 
#!/usr/bin/env perl 

還可以加上-P參數來指定一些目錄去尋找perl這個程序, #!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl的作用就是在/usr/local/bin和/usr/bin目錄下尋找perl。

#!/usr/bin/env -S -P/usr/local/bin:/usr/bin perl 
爲了讓程序更加的有可擴展性,可以寫成 
#!/usr/bin/env -S-P/usr/local/bin:/usr/bin:${PATH} perl,那麼它除了在這兩個目錄尋找之外,還會在PATH變量中定義的目錄中尋找。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章