程式語言、Linux 和 Windows shell 存取

程式語言、Linux 和 Windows shell 存取

Linux 和 Windows shell 存取工具有什麼不同?

在某些程式語言(根據我的經驗,網路語言)中,當您需要執行某些命令時- 您需要在Windows 中指定cmd.exe 的路徑,而在Linux 中,您立即存取shell...有什麼區別以及為什麼?當您執行某種os.execute()指令時,語言在兩個系統中到底會遇到什麼?

編輯:這是一個理論問題,與程式設計實踐無關。我確實意識到這可能不容易解釋主題,因此連結或顯示正確的挖掘方向也可以解決問題。

這是冷融合的一個例子(我應該說這是一個奇怪的例子):

<cfexecute name="C:\Windows\System32\cmd.exe" arguments="echo Hm" />

答案1

好吧,我會盡量簡單(廣泛的主題)

windows 和 linux 之間的區別很明顯,核心不一樣,我不會沿著歷史方向前進(如果你好奇的話可以查看維基百科;),但是 linux 傾向於更喜歡腳本,因為這允許用戶自定義安裝或作業系統隨心所欲,Windows使用修改登錄機碼的.exe來執行程式。

至於為什麼需要輸入完整路徑來執行Windows exe,這很簡單(我不會進行深入無聊的解釋),Windows並不真正使用全域變數(簡單解釋:registerkey並不真正需要這個來操作exe),而linux往往喜歡全域變量,事實上你可以輕鬆地在linux中添加指向你的腳本的全域變數。

因此,當您想要執行 Linux 腳本時,您可以輸入 cmd(指向包含路徑的全域變數),然後神奇的事情就發生了。對於windons,您是全域變量,因此您需要定義要執行的exe 的路徑。如果你願意的話,你可以在windows中建立自己的全域變數並像linux一樣使用它,但我個人不喜歡這樣做。

希望你能更好地理解這個原理。

答案2

它們是完全不同的平台,透過各自的 shell 執行的大多數命令都是不相容的,除了西格文在 Windows 上,它使用與 Linux shell 相同的命令。

根據經驗,請盡可能避免使用特定於作業系統的呼叫。

答案3

從 python 內部我可以說:

>>> rc = os.system('echo yes')
yes
>>>

這在 Windows、Linux 或任何 Unix 變體下都同樣有效。

我認為您觀察到的現像是特定於所討論語言的可移植性的。

請注意,產生相同結果的命令字串子集非常有限。 Windows 和 Unix 的共同指令很少。

相關內容