我注意到對於bash
腳本,有些人使用不同的
舍邦到我習慣把它放在我自己的頂部的那個。
有人可以簡化這兩者之間的差異嗎?我#!/bin/bash
一直用這個。
#!/bin/bash
#!/usr/bin/env bash
答案1
腳本中的結果#!/usr/bin/env bash
使用首先在$PATH
.
雖然 bash 通常位於/bin/bash
.在某些情況下,情況並非如此(不同的作業系統)。另一個潛在的用途是當安裝了多個 bash shell 時(較新的版本位於備用位置,如/usr/local/bin/bash
)。
做#!/usr/bin/env bash
只是利用了效用的行為env
。
該env
實用程式通常用於在呼叫程式時操作環境(例如,env -i someprog
將環境擦除乾淨)。但是,除了要執行的程序之外,如果不提供任何參數,則會導致執行指定的程序,如 中所示$PATH
。
請注意,這樣做既有優點也有缺點。
優點如前所述,如果 bash 安裝在不同的位置,或者如果/bin/bash
bash 太舊而無法支援腳本嘗試執行的操作,則它使腳本可移植。
缺點是您可能會出現不可預測的行為。由於您受到使用者的支配$PATH
,因此可能會導致腳本執行時所使用的 bash 版本的行為與腳本預期的行為不同。