在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。