2010-07-19 39 views
1

我在Windows上寫了一堆腳本(無法修改)。 Windows允許在其#!命令中使用相對路徑。我們正試圖在Unix上運行這些腳本,但Bash似乎只是在其#!指令中考慮絕對路徑。我環顧四周,但一直未能找到Bash中的選項或設計替換和解釋名稱的程序。是否有可能重寫該功能 - 甚至可能通過使用不同的shell?是否可以重寫hashbang/shebang路徑行爲

+0

Windows在批處理腳本中不使用'#!'。你是指Windows下的Cygwin? – casablanca 2010-07-19 20:54:02

+1

如果腳本無法修改,它不是一個編程問題。 – 2010-07-19 20:54:55

+3

這不是Bash,而是處理shebang行的內核。 – 2010-07-19 22:20:25

回答

4

通常,您可以指定二進制文件來執行腳本,這會導致#!被忽略。所以,如果你有一個Python腳本,看起來像:

#!..\bin\python2.6 
# code would be here. 

在Unix/Linux你可以說:

prompt$ python2.6 <scriptfile> 

,它會執行使用命令行二進制文件。我將hashbang行視爲一個要求操作系統使用行中指定的二進制文件的行,但您可以通過不執行腳本作爲正常可執行文件來覆蓋它。

最糟糕的情況是,您可能會編寫一些包裝腳本,這些包裝腳本會明確告訴解釋器在您將使用的所有平臺的腳本文件中執行代碼。

+0

不幸的是,我正在使用的語言不使用#作爲註釋,所以這將不起作用 - 當然,如果語言* *支持這一點,這將是答案,所以我會給你的觀點。 – wickedchicken 2010-07-20 19:36:08

+2

爲了記錄,使用#作爲註釋與是否與#無關!在文件的開始將工作。見http://en.wikipedia.org/wiki/Shebang_(Unix) – ninjagecko 2011-04-26 18:54:50