Linux と Windows のシェル アクセス ツールの違いは何ですか?
一部のプログラミング言語 (私の経験では Web 言語) では、何らかのコマンドを実行する必要があるときに、Windows では cmd.exe へのパスを指定する必要がありますが、Linux ではすぐにシェルにアクセスします... 違いは何ですか、またなぜですか? 何らかのos.execute()
コマンドを実行すると、両方のシステムで言語は正確に何にヒットするのですか?
編集: これはむしろ理論的な質問であり、プログラミングの実践とは関係ありません。これは簡単に説明できないトピックかもしれないことは承知していますが、リンクや掘り下げる正しい方向を示すことも効果的です。
以下は ColdFusion の例の 1 つです (奇妙で奇妙な例と言わざるを得ません)。
<cfexecute name="C:\Windows\System32\cmd.exe" arguments="echo Hm" />
答え1
まあ、簡単に説明しようと思います(広い主題ですが)
Windows と Linux の違いは明らかで、コアは同じではありません。歴史的な方向には立ち入りません (興味があれば Wikipedia で確認してください)。しかし、Linux ではスクリプトが好まれる傾向があります。スクリプトを使用すると、ユーザーがインストールや OS を自由にカスタマイズできるからです。一方、Windows では、プログラムを実行するためにレジスタ キーを変更する .exe を使用します。
Windows の exe を実行するためにパス全体を入力する必要がある理由は非常に単純です (退屈な説明は深くはしません)。Windows は実際にはグローバル変数を使用しません (簡単な説明: レジスタキーは exe を操作するために実際にはこれを必要としません)。一方、Linux はグローバル変数を好む傾向があり、実際にスクリプトを指すグローバル変数を Linux に簡単に追加できます。
したがって、Linux スクリプトを実行する場合は、cmd (パスを含むグローバル変数を指す) を入力すると、魔法が実行されます。Windows の場合、グローバル変数であるため、実行する exe へのパスを定義する必要があります。Windows で独自のグローバル変数を作成し、必要に応じて Linux のように使用できますが、個人的にはそうすることは好きではありません。
原理を少し理解していただけたら幸いです。
答え2
これらは完全に異なるプラットフォームであり、それぞれのシェルで実行されるほとんどのコマンドは互換性がありません。シグウィンWindows では、Linux シェルと同じコマンドを使用します。
経験則として、可能な限り OS 固有の呼び出しの使用を避けるようにしてください。
答え3
Python 内からは次のように言えます:
>>> rc = os.system('echo yes')
yes
>>>
これは、Windows、Linux、または任意の Unix バリアントで同じように動作します。
あなたが観察した現象は、問題の言語の移植性に特有のものだと思います。
また、同一の結果を生成するコマンド文字列のサブセットは非常に限られていることに注意してください。Windows と Unix に共通するコマンドはほとんどありません。