Чому Windows та Ubuntu мають подібні команди оболонки?


14

Ubuntu має bash (Bourne Again SHell), тоді як Windows має свою власну оболонку. Згідно з моїм дослідженням, в Windows / Ubuntu немає назви мови, що використовується для сценаріїв оболонок. Це просто називається сценарієм оболонки.

Чому для Windows і Ubuntu оболонки розуміють одні і ті ж команди , такі як: ls, mkdir, rmdir, mountі так далі?

Чи існує якась lingua franca для сценаріїв оболонок? Якщо так, будь ласка, дайте мені більше деталей.


9
Дивіться en.wikipedia.org/wiki/List_of_Unix_commands - подивіться, коли ці команди вперше з’явилися, і перевірте, коли Windows та GNU вперше з’явилися. Ці команди не є частиною bash - це зовнішні утиліти, тому яка оболонка використовується не має значення.
муру

10
І я впевнений, що lsПауершелл підтримує це не так cmd.exe. І це тому, що творці Powershell докладають певних зусиль, щоб додати псевдоніми для загальних команд Unix, щоб користувачам Unix було комфортніше. technet.microsoft.com/en-us/library/dd347739.aspx
Мура

7
Стаття Вікіпедії про DOS, може пролити трохи світла на це. Цитата: "DOS замість цього працював на 16-бітних процесорах Intel 8086. Починаючи з MS-DOS 1,28 і ПК DOS 2.0, операційна система включала в себе різні функції, натхненні Xenix, варіантом Microsoft Unix". Тож Unix до певного моменту є предком для MS-DOS. en.wikipedia.org/wiki/DOS
theodorn

4
@muru: Насправді, і команди Unix, і DOS - це фактично псевдоніми реальних команд PowerShell, які названі відповідно до стандартизованої Action-Objectструктури, що складається з набору також стандартизованих дій і об'єктів. Наприклад, lsі dirпсевдоніми Get-ChildItem(що додатково має псевдонім gci), mkdirі mdє насправді New-Item(що насправді може створювати набагато більше, ніж просто каталоги, завдяки об’єктно-орієнтованому підходу PowerShell) тощо.
Йорг W Міттаг

2
Подивіться також на CPM, VMS, JCL.
Zan Lynx

Відповіді:


44

Для Windows cmd.exeне підтримує ls, mountі т.д., якщо ви не встановили їх самі і додали їх до %PATH%(через Cygwin, MinGW, підсистема для Unix-додатків (SUA) або що - то ще). Powershell робить. І це тому, що Powershell має такі псевдоніми до стандартних команд Powershell, щоб користувачам Unix було зручніше. Перегляньте список псевдонімів сумісності в Powershell . У Windows є rmdirі mkdirт.д. , але вони, звичайно, не підтримують той же синтаксис параметрів, який ви знайдете в Ubuntu.

В Ubuntu вони не мають нічого спільного з Bash. Вони всі зовнішні команди. Існують стандарти на такі комунальні послуги. POSIX є найбільш помітним (див. Перелік утиліт , призначених для POSIX ), а Linux Standard Base (LSB) - ще одна важлива для систем Linux (яка в основному базується на POSIX, але має деякі доповнення ). Отримані в Ubuntu здебільшого надаються GNU , а утиліти GNU часто мають більше функцій, ніж база, що вимагається POSIX.

POSIX також визначає згадану вами мову оболонки (яка істотно відрізняється від мови в cmd.exe). Він походить від синтаксису оболонки Борна . Bash (тепер ви знаєте, на що знову посилається Bourne ), також від GNU, також додає функції на вершині, але може поводитися у відповідності з POSIX, коли це вимагається. Мова POSIX - це те, про що ви хочете отримати sh. bash, ksh, ash, dash, zshБудь-яке використання , що мова, з поліпшеннями. cshперебуває у власному (кошмарному) світі та tcshзміцнюється csh.

Щоб зрозуміти трохи більше, загляньте в історію Unix та Unix-подібних систем. Unix заздалегідь датував Windows понад десятиліття, і ці утиліти вперше з'явилися в Unix.

Свого часу Windows була сумісною з POSIX, оскільки уряд США вимагав цього для ОС, які використовувались урядовими установами (саме тоді вони додали Служби для Unix (SFU) , з яких походить SUA, згаданий у першому пункті). Але ця вимога була знята, і згодом SUA було відмінено.

Пов'язані:

(Зверніть увагу на загальну частину цих публікацій - всі вони є на Unix & Linux та позначені історією - ви можете переглядати цей тег дуже інформативно.)


3
AFAIK, rmdir(поряд з mkdirі cd / chdir) є носіями command.comвбудованих функцій, так як MS-DOS 2.0 (не було ніякої ієрархії в файлової системі DOS раніше)
jlliagre

1
rdбув також ярликом md.
jlliagre

1
Це те, що я отримав від читання вашої відповіді та переходу через посилання, надані іншими: Ці команди / утиліти вперше з'явилися в минулому на різних різних системах. З часом більшість з них були інтегровані в Ubuntu, а частина - в Windows. Однак Windows вирішила робити свої речі і створити власну версію цих утиліт. З часом Windows вирішила додати псевдоніми до власних команд оболонки, щоб користувачі Linux могли використовувати команди, які на поверхні виглядають так само, як у їхніх системах, але під ними вони переведені на команди Windows
Shady Programmer

1
Мова POSIX - це те, про що ви хочете отримати sh. bash, ksh, ash, dash, zshБудь-яке використання , що мова, з поліпшеннями. cshперебуває у власному (кошмарному) світі та tcshзміцнюється csh. Свого часу Windows підкорялася POSIX, оскільки уряд США вимагав цього для ОС, які використовувались урядовими установами (саме звідси походить SUA). Але ця вимога була знята, і згодом SUA було відмінено.
муру

1
@ShadyProgrammer ще один U&L пост, який ви знайдете цікавим: unix.stackexchange.com/q/145522/70524
muru

0

Простий:

Linux - це система, заснована на моделі UNIX, як її винайшли Денніс Річі та Кен Томпсон.

Windows / DOS - це дешевий перемикач системи під назвою CP / M, який був популярний у 1970-х на тих старих комп’ютерах, які ви підключили до телевізора; ця система, в свою чергу, була дешевим підключенням ранніх систем UNIX з кінця 60-х - початку 70-х .


Хоча у вашій відповіді є якась правда, це занадто спрощено, щоб бути корисним. (І ми використовували монітори або термінали з CP / M - не телевізорами;)) Коли я намагаюся розібратися в якійсь незрозумілій команді bash або sed, я інколи згадую ті часи, коли ОС навряд чи щось робила для тебе, але це зробити це було легко - і мені ніколи не закінчувалося пам'яті на 64-кілометровій машині.
Джо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.