web-dev-qa-db-fra.com

Pourquoi Windows et Ubuntu ont-ils des commandes Shell similaires?

Ubuntu a un bash (Bourne Again Shell) alors que Windows a son propre shell. D'après mes recherches, il n'existe pas de nom pour le langage utilisé pour les scripts Shell dans Windows/Ubuntu. C'est juste appelé script Shell.

Pourquoi les shells Windows et Ubuntu comprennent-ils les mêmes commandes telles que: lsname__, mkdirname__, rmdirname__, mountet ainsi de suite?

Existe-t-il une sorte de lingua franca pour les scripts Shell? Si oui, donnez-moi plus de détails, s'il vous plaît.

14
Shady Programmer

Le cmd.exe de Windows ne prend pas en charge ls, mount, etc., à moins que vous ne les ayez installés vous-même et que vous les ayez ajoutés au %PATH% (via Cygwin, MinGW, ) pour les applications Unix (SUA) ou autre chose). Powershell fait. Et c’est parce que Powershell utilise ces alias pour les commandes Powershell standard, de sorte que les utilisateurs d’Unix puissent être plus à l'aise. Voir la liste des alias de compatibilité dans Powershell . Windows a rmdir, mkdir, etc. , mais ceux-ci, bien sûr, ne supportent pas la même syntaxe d'option que celle que vous trouveriez sur Ubuntu.

Dans Ubuntu, cela n’a rien à voir avec Bash. Ce sont toutes des commandes externes. Il existe des normes pour ces utilitaires. POSIX est le plus notable (voir la liste des utilitaires commandés par POSIX ), et La base standard Linux (LSB) est un autre élément important pour les systèmes Linux (principalement basé sur POSIX, mais comportant des ajouts ). Celles sur Ubuntu sont principalement fournies par GNU , et les utilitaires GNU ont souvent plus de fonctionnalités que la base requise par POSIX.

POSIX définit également le langage Shell que vous avez mentionné (qui est sensiblement différent de celui de cmd.exe ). Il est dérivé de la syntaxe de Bourne Shell . Bash (maintenant vous savez à quoi Bourne à nouveau fait référence), également de GNU, ajoute également des fonctionnalités supplémentaires, mais peut se comporter de manière compatible avec POSIX si nécessaire. Le langage POSIX est ce que vous vous attendriez à obtenir avec sh. bash, ksh, ash, dash, zsh utilisent tous ce langage , avec des améliorations. csh est dans son propre monde (cauchemar) et tcsh améliore csh.

Pour en savoir un peu plus, examinez l’histoire d’Unix et des systèmes semblables à Unix . Unix a précédé Windows de plus de dix ans et ces utilitaires sont apparus pour la première fois sous Unix.

Windows était, à un moment donné, compatible POSIX, car le gouvernement américain l'exigeait pour les systèmes d'exploitation utilisés par les agences gouvernementales (c'est à ce moment-là qu'ils ont ajouté les services pour Unix (SFU) , à partir desquels la SUA mentionnée dans le premier paragraphe). Mais cette exigence a été supprimée et, par la suite, SUA a été abandonnée.

En relation:

(Notez la partie commune de ces messages - ils sont tous sur Unix et Linux , et étiquetés historique - vous pourriez trouver en parcourant cette balise très informative.)

44
muru

Simple:

Linux est un système basé sur le modèle UNIX, inventé par Dennis Ritchie et Ken Thompson.

Windows/DOS est une imitation peu coûteuse d'un système appelé CP/M qui était populaire dans les années 1970 sur ces vieux ordinateurs branchés sur un téléviseur. Ce système était à son tour une imitation peu coûteuse des systèmes UNIX de la fin des années 60 et du début des années 70. .

0
delt