我在Windows上寫了一堆腳本(無法修改)。 Windows允許在其#!
命令中使用相對路徑。我們正試圖在Unix上運行這些腳本,但Bash似乎只是在其#!
指令中考慮絕對路徑。我環顧四周,但一直未能找到Bash中的選項或設計替換和解釋名稱的程序。是否有可能重寫該功能 - 甚至可能通過使用不同的shell?是否可以重寫hashbang/shebang路徑行爲
回答
通常,您可以指定二進制文件來執行腳本,這會導致#!
被忽略。所以,如果你有一個Python腳本,看起來像:
#!..\bin\python2.6
# code would be here.
在Unix/Linux你可以說:
prompt$ python2.6 <scriptfile>
,它會執行使用命令行二進制文件。我將hashbang行視爲一個要求操作系統使用行中指定的二進制文件的行,但您可以通過不執行腳本作爲正常可執行文件來覆蓋它。
最糟糕的情況是,您可能會編寫一些包裝腳本,這些包裝腳本會明確告訴解釋器在您將使用的所有平臺的腳本文件中執行代碼。
不幸的是,我正在使用的語言不使用#作爲註釋,所以這將不起作用 - 當然,如果語言* *支持這一點,這將是答案,所以我會給你的觀點。 – wickedchicken 2010-07-20 19:36:08
爲了記錄,使用#作爲註釋與是否與#無關!在文件的開始將工作。見http://en.wikipedia.org/wiki/Shebang_(Unix) – ninjagecko 2011-04-26 18:54:50
- 1. 是否可以重寫window.document.location.host?
- 2. 是否可以重寫drupal_build_css_cache?
- 3. 是否可以定義可重用的路徑操作?
- 4. 是否可以重寫Visual Studio項目文件中的Nuget提示路徑?
- 5. 是否可以(輕鬆地?)重寫Mercurial Queue補丁中的路徑?
- 6. 是否可以重寫ASP.NET MVC中[Authorize]的默認行爲?
- 7. 是否可以將其重寫爲單行?
- 8. url重寫路徑
- 9. URL路徑重寫
- 10. 要重寫路徑
- 11. 如何驗證是否可以使用Powershell執行路徑?
- 12. 是否可以在expressjs中執行兩條路徑?
- 13. 是否可以從svn命令行設置路徑權限?
- 14. 是否可以爲nuget指定packages.config的自定義路徑?
- 15. 是否可以重寫向後導航?
- 16. 是否可以重寫DRF中的StringRelatedField?
- 17. 是否可以重寫std :: endl?
- 18. 是否可以重寫內聯函數?
- 19. 是否可以重寫Swift中的deinit?
- 20. 是否可以重寫「調用」函數?
- 21. 是否可以重寫Model.objects.all()方法?
- 22. 是否可以重寫表單助手?
- 23. 檢查文件路徑是否可讀可寫
- 24. 是否可以將自定義路徑追加到Rails路由的「新」路徑?
- 25. WCF ServiceRoute路由前綴是否可以包含路徑值?
- 26. 是否可以一次自定義路由路徑?
- 27. 使用mod重寫apache重寫路徑
- 28. 重寫Bootstrap V4的預設CSS是否可以重寫?
- 29. 將URL參數重寫爲新路徑
- 30. 爲mod重寫添加路徑
Windows在批處理腳本中不使用'#!'。你是指Windows下的Cygwin? – casablanca 2010-07-19 20:54:02
如果腳本無法修改,它不是一個編程問題。 – 2010-07-19 20:54:55
這不是Bash,而是處理shebang行的內核。 – 2010-07-19 22:20:25