Mengapa Windows & Ubuntu memiliki perintah shell yang serupa?

14

Ubuntu memiliki bash (Bourne Again SHell) sedangkan Windows memiliki shell miliknya. Menurut penelitian saya, tidak ada nama untuk bahasa yang digunakan untuk skrip shell di Windows / Ubuntu. Itu hanya disebut skrip shell.

Mengapa Windows & Ubuntu kerang memahami perintah yang sama seperti: ls, mkdir, rmdir, mountdan sebagainya?

Apakah ada semacam lingua franca untuk skrip shell? Jika demikian, tolong beri saya detail lebih lanjut.

Programmer Shady
sumber
9
Lihat en.wikipedia.org/wiki/List_of_Unix_commands - cari ketika perintah ini pertama kali muncul, dan periksa kapan Windows dan GNU pertama kali muncul. Perintah-perintah ini bukan bagian dari bash - itu adalah utilitas eksternal, jadi shell mana yang digunakan tidak relevan.
muru
10
Dan saya cukup yakin lsdidukung oleh Powershell, bukan cmd.exe. Dan itu karena pencipta Powershell berupaya menambahkan alias untuk perintah Unix yang umum sehingga pengguna Unix akan lebih nyaman. technet.microsoft.com/en-us/library/dd347739.aspx
Muru
7
Artikel Wikipedia tentang DOS, mungkin menjelaskan ini. Kutipan: "DOS sebagai gantinya berjalan pada prosesor Intel 8086 16-bit. Dimulai dengan MS-DOS 1.28 dan PC DOS 2.0 sistem operasi menggabungkan berbagai fitur yang terinspirasi dari Xenix, varian Microsoft dari Unix." Jadi Unix, sampai batas tertentu, adalah bapak leluhur MS-DOS. en.wikipedia.org/wiki/DOS
theodorn
4
@muru: Bahkan, kedua Unix dan perintah DOS sebenarnya hanya alias ke nyata perintah PowerShell, yang diberi nama sesuai dengan standar Action-Objectstruktur, terdiri dari serangkaian tindakan dan benda-benda juga standar. Sebagai contoh, keduanya lsdan diralias untuk Get-ChildItem(yang juga memiliki alias gci), mkdirdan mdsebenarnya New-Item(yang sebenarnya dapat membuat lebih dari sekadar direktori, karena pendekatan berbasis objek PowerShell), dan sebagainya.
Jörg W Mittag
2
Lihat juga CPM, VMS, JCL.
Zan Lynx

Jawaban:

44

Windows cmd.exetidak mendukung ls, mountdll., Kecuali Anda menginstalnya sendiri dan menambahkannya ke %PATH%(melalui Cygwin, MinGW, Subsistem untuk Aplikasi Berbasis Unix (SUA) atau yang lainnya). Powershell melakukannya. Dan itu karena Powershell memiliki ini sebagai alias untuk perintah Powershell standar, sehingga pengguna Unix bisa lebih nyaman. Lihat daftar Alias ​​Kompatibilitas di Powershell . Windows memang memiliki rmdir,, mkdirdll. , Tetapi ini, tentu saja, tidak mendukung sintaks opsi yang sama dengan yang Anda temukan di Ubuntu.

Di Ubuntu, ini tidak ada hubungannya dengan Bash. Itu semua adalah perintah eksternal. Ada standar untuk utilitas semacam itu. POSIX adalah yang paling terkenal (lihat daftar utilitas yang diamanatkan POSIX ), dan Linux Standard Base (LSB) adalah hal lain yang penting untuk sistem Linux (yang sebagian besar didasarkan pada POSIX, tetapi memiliki beberapa tambahan ). Yang di Ubuntu sebagian besar disediakan oleh GNU , dan utilitas GNU sering memiliki lebih banyak fitur daripada basis yang dibutuhkan oleh POSIX.

POSIX juga mendefinisikan bahasa shell yang Anda sebutkan (yang secara substansial berbeda dari yang ada di cmd.exe). Ini berasal dari sintaksis Bourne shell . Bash (sekarang Anda tahu apa yang dimaksud Bourne lagi ), juga dari GNU, juga menambahkan fitur di atas, tetapi dapat berperilaku sesuai cara POSIX ketika diperlukan. Bahasa POSIX adalah apa yang Anda harapkan sh. bash, ksh, ash, dash, zshSemua menggunakan itu bahasa, dengan perangkat tambahan. cshberada di dunia (mimpi buruk) sendiri, dan tcshmeningkatkan csh.

Untuk memahami lebih jauh, lihat sejarah sistem Unix dan Unix-like . Unix melakukan pra-tanggal Windows lebih dari satu dekade, dan utilitas ini pertama kali muncul di Unix.

Windows, pada satu waktu, POSIX-compliant, karena pemerintah AS memerlukannya untuk OS yang digunakan oleh lembaga pemerintah (saat itulah mereka menambahkan Services for Unix (SFU) , dari mana datang SUA yang disebutkan dalam paragraf pertama). Tapi persyaratan itu dibatalkan, dan kemudian, SUA dibatalkan.

Terkait:

(Catat bagian umum dari posting ini - semuanya ada di Unix & Linux , dan riwayat yang ditandai - Anda mungkin menjelajah melalui tag itu sangat informatif.)

muru
sumber
3
AFAIK, rmdir(bersama dengan mkdirdan cd / chdir) adalah command.com
bawaan bawaan
1
rdjuga merupakan jalan pintas md.
jlliagre
1
Inilah yang saya dapatkan dari membaca jawaban Anda dan membaca tautan yang disediakan oleh orang lain: Perintah / utilitas ini pertama kali muncul di masa lalu pada berbagai sistem yang berbeda. Seiring waktu sebagian besar dari mereka telah diintegrasikan ke dalam Ubuntu dan beberapa dari mereka ke dalam Windows. Namun Windows memutuskan untuk melakukan hal-hal dengan caranya sendiri dan membuat versi mereka sendiri dari utilitas ini. Seiring waktu Windows memutuskan untuk menambahkan alias ke perintah shell mereka sendiri sehingga pengguna linux dapat menggunakan perintah yang di permukaan tampak sama seperti pada sistem mereka tetapi di bawahnya mereka diterjemahkan ke perintah windows
Shady Programmer
1
Bahasa POSIX adalah apa yang Anda harapkan sh. bash, ksh, ash, dash, zshSemua menggunakan itu bahasa, dengan perangkat tambahan. cshberada di dunia (mimpi buruk) sendiri, dan tcshmeningkatkan csh. Windows, pada suatu waktu, mematuhi POSIX, karena pemerintah AS mengharuskannya untuk OS yang digunakan oleh lembaga pemerintah (di situlah SUA berasal). Tapi persyaratan itu dibatalkan, dan kemudian, SUA dibatalkan.
muru
1
@ShadyProgrammer, postingan U&L lain yang menurut Anda menarik: unix.stackexchange.com/q/145522/70524
muru
0

Sederhana:

Linux adalah sistem yang didasarkan pada model UNIX, seperti yang ditemukan oleh Dennis Ritchie dan Ken Thompson.

Windows / DOS adalah tiruan murah dari sistem yang disebut CP / M yang populer di tahun 1970-an pada komputer lama yang Anda gunakan di TV, sistem ini pada gilirannya adalah tiruan murah dari sistem UNIX awal dari akhir 60-an / awal 70-an .

delt
sumber
Meskipun ada beberapa kebenaran dalam jawaban Anda, terlalu disederhanakan untuk berguna. (Dan kami menggunakan monitor atau terminal dengan CP / M - bukan TV;)) Ketika saya mencoba untuk mencari beberapa perintah bash atau sed yang tidak jelas, saya kadang-kadang berpikir kembali ke masa ketika OS hampir tidak melakukan apa-apa untuk Anda, tetapi itu mudah dilakukan - dan saya tidak pernah kehabisan memori pada mesin 64k.
Joe