這其實是個非常簡單的東西。
我們會寫一些命令列的工具,一般跨平臺的話,會用python或者perl寫,比如叫foo.py,然後在Windows和Linux下呼叫這個指令碼:
- Linux: foo.py - 只要在第一行加上:#!/usr/bin/python
- Windows: python foo.py
- 直接foo.py是不一定能工作的,除非你在你的系統中設定了<字尾名-程式>的對映,但這個就有問題了,首先,這對本機有依賴關係了;其次,你到底用哪個版本的python?每個系統設定可能不一樣 - 作為這個工具的作者肯定希望我們來控制這些因素。
於是,Windows與Linux的命令列就不一致了。。。
解決方案是為windows建立一個同名的batch檔案,轉調那個python檔案:
foo.cmd:
/network/path/python/2.7.3/bin/python foo
同時,正如你看到的,把原來的python檔案重新命名為foo - 去掉字尾名,於是,現在你有:
- Windows: foo.cmd
- Linux: foo (with #!/usr/bin/python)
當你在命令列敲入foo的時候,作業系統會自動幫你選擇正確的檔案並正確的執行。
當然,如果你不是寫python或者perl檔案,而直接是shell或者batch指令碼,你應該知道怎麼命名你的指令碼了:
- Windows: bar.cmd
- Linux: bar (with #!/usr/bin/bash)