實現Linux與Windows下一致的命令列

lzprgmr發表於2013-06-25

這其實是個非常簡單的東西。

我們會寫一些命令列的工具,一般跨平臺的話,會用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)

相關文章