web-dev-qa-db-ja.com

WindowsとUbuntuに同様のシェルコマンドがあるのはなぜですか?

Ubuntuにはbash(Bourne Again Shell)がありますが、Windowsには独自のシェルがあります。私の研究によると、Windows/Ubuntuのシェルスクリプトに使用される言語の名前はありません。シェルスクリプトと呼ばれます。

なぜWindowsとUbuntuシェルは、lsmkdirrmdirmountなどの同じコマンドを理解するのですか?

Shellスクリプト用の共通語のようなものはありますか?もしそうなら、詳細を教えてください。

14

Windows cmd.exelsmountなどをサポートしません。これらを自分でインストールして%PATH%に追加しない限り(Cygwin、MinGW、 nixベースのアプリケーション用サブシステム(SUA ) またはその他))。 Powershellは行います。それは、Powershellがこれらを標準のPowershellコマンドのエイリアスとして持っているためです。これにより、Unixユーザーはより快適になれます。 Powershellの互換性エイリアス のリストを参照してください。 Windowsには rmdirmkdirなど がありますが、これらはもちろん、Ubuntuで見られるのと同じオプション構文をサポートしていません。

Ubuntuでは、これらはBashとは関係ありません。それらはすべて外部コマンドです。そのようなユーティリティには標準があります。 POSIX が最も注目に値します( POSIX必須ユーティリティ のリストを参照)、そして Linux Standard Base(LSB) も重要ですLinuxシステムの場合(ほとんどがPOSIXに基づいていますが、 一部の追加 があります)。 Ubuntu上のもののほとんどは GNU で提供され、GNUユーティリティはPOSIXで必要なベースよりも多くの機能を備えていることがよくあります。

POSIXでは、 シェル言語 についても定義しています(これは cmd.exe のものとは大幅に異なります)。 Bourne Shell の構文から派生しています。 Bash(Bourne againが何を参照しているか知っています)また、GNUからも機能が追加されていますが、POSIX準拠の方法で動作できます必要な場合に。 POSIX言語は、shで得られるものです。 bashkshashdashzsh all usethat拡張された言語。 cshは(悪夢のような)独自の世界にあり、tcshcshを強化します。

もう少し理解するには、Unixと nixのような システムの歴史を調べてください。 Unixは10年以上前にWindowsに先行し、これらのユーティリティはUnixで初めて登場しました。

Windowsは、かつてPOSIX準拠でした。これは、米国政府が政府機関が使用するOSに対してWindowsを必要としていたためです( Services for Unix(SFU) 。最初の段落)。しかし、その要件は破棄され、その後、SUAは廃止されました。

関連する:

(これらの投稿の共通部分に注意してください-それらはすべて nixおよびLinux にあり、タグ付き history -そのタグを参照すると非常に有益であることがわかります。)

44
muru

シンプル:

Linuxは、デニスリッチーとケントンプソンが発明したUNIXモデルに基づくシステムです。

Windows/DOSは、1970年代にテレビに接続した古いコンピューターで普及していたCP/Mと呼ばれるシステムの安価な模造品であり、このシステムは60年代後半/ 70年代初期の初期のUNIXシステムの安価な模造品でした。

0
delt