這兩個 bash 環境有什麼不同?

這兩個 bash 環境有什麼不同?

我注意到對於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/bashbash 太舊而無法支援腳本嘗試執行的操作,則它使腳本可移植。

缺點是您可能會出現不可預測的行為。由於您受到使用者的支配$PATH,因此可能會導致腳本執行時所使用的 bash 版本的行為與腳本預期的行為不同。

相關內容