2012-11-14 78 views
4

我想從兩個不同的位置上運行我的Expect腳本的Expect腳本,也將努力爲以下期待可執行文件引用:執行從不同位置

  1. 我的Linux主目錄(#!/usr/bin/expect
  2. 一另一臺服務器上的清除視圖(#!/clearlib/vobs/otherdir/bin/expect

問題是,除非將Expect可執行文件位置的引用更改爲文件的第一行,否則我無法在兩個位置都運行該腳本。

如何獲得相應目錄的Expect可執行文件的正確實例?

回答

3

如果你的路徑是否正確兩臺服務器上設置,你可以使用/usr/bin/env

#!/usr/bin/env expect 

這將使用期望的那樣發現了PATH/usr/bin在一種情況下,/clearlib/vobs/otherdir/bin在其他)

通過替代地使用env(如在示例中),解釋器被搜索並且位於腳本運行時。
這使腳本更具可移植性,但也增加了選擇錯誤解釋器的風險,因爲它在可執行搜索路徑上的每個目錄中搜索匹配項。
它也遭受同樣的問題,因爲到二進制的路徑env也可能在每臺機器上不同。

如果您在設置正確的PATH時遇到問題,那麼「/usr/bin/env questions regarding shebang line pecularities」可以提供幫助。

+0

哇,這很簡單。再次感謝馮! – Jake88