1. 程式人生 > >#!/usr/bin/env在指令碼中的作用

#!/usr/bin/env在指令碼中的作用

在linux的一些指令碼,需在開頭一行指定指令碼的解釋程式,如:

#!/usr/bin/env bash

#!/usr/bin/bash

#!/usr/bin/env python  告訴作業系統執行這個指令碼的時候,呼叫/usr/bin下的python直譯器;

#!/usr/bin/python  告訴作業系統到env設定裡查詢python的安裝路徑,再呼叫對應路徑下的直譯器程式完成操作

兩種形式的區別是什麼?

指令碼用env啟動的原因,是因為指令碼直譯器在linux中可能被安裝於不同的目錄,env可以在系統的PATH目錄中查詢。同時,env還規定一些系統環境量。 而如果直接將直譯器路徑寫死在腳本里,可能在某些系統就會存在找不到直譯器的相容性問題。

還可以加上-P引數來指定一些目錄去尋找perl這個程式, #!/usr/bin/env -S -P /usr/local/bin:/usr/bin:${PATH} perl --->在/usr/local/bin和/usr/bin和PATH變數中定義的目錄下尋找perl。