Je trouve que certaines commandes, par exemple, ls
et pwd
, peuvent être utilisées sur les systèmes Linux et Unix.
- Est-ce que toutes les commandes Linux peuvent être utilisées dans les systèmes Unix et toutes les commandes Unix peuvent être utilisées sous Linux?
- Ou tout simplement que toutes les commandes Linux peuvent s'exécuter sur Unix mais pas toutes les commandes Unix peuvent s'exécuter sur Linux.
- Ou que toutes les commandes Unix peuvent s'exécuter sur Linux, mais toutes les commandes Linux ne peuvent pas s'exécuter sur Unix?
- Ou existe-t-il une référence pour me montrer quelles commandes peuvent s'exécuter à la fois sur Linux et Unix, et où les deux ont leur propre commande unique?
Réponses:
Le commentaire de Daniel Andersson sur POSIX est la vraie réponse ici: il existe une norme appelée POSIX qui définit le cœur d'un système de type UNIX, à la fois en termes de commandes shell et d'appels système. En théorie, si vous écrivez un logiciel dans la spécification POSIX, il devrait être possible de le compiler et de l'exécuter sur n'importe quel système UNIX, Linux, BSD, etc.
http://pubs.opengroup.org/onlinepubs/009695399/mindex.html vous donnera une réponse définitive quant à ce qui constitue POSIX, mais ce n'est pas une réponse utile à des fins pratiques. Quelqu'un d'autre peut avoir de bonnes références de commande pour les différences communes entre les systèmes Linux et d'autres systèmes de type UNIX.
Un exemple spécifique: "killall" sur Linux tue tous les processus avec un nom particulier. Sous Solaris, il arrête le système. Important de ne pas utiliser le mauvais.
la source
cat
acat
, et rappelez-vous qu'une rose sous un autre nom aura toujours une odeur douce. Hie thee à une boîte Windows et découvrez ce qu'Unix n'est pas . Mais Linux est bien sûr Unix.Aujourd'hui, la plupart des distributions Linux sont livrées avec de nombreux logiciels GNU essentiels et la chaîne d'outils GNU. GNU était un projet de réécriture d'une copie libre en liberté d'Unix qui a ensuite été couplée avec le noyau Linux. Lorsque vous utilisez
ls
sur une machine Unix, vous utilisez l'original / ce qui est devenu l'originalls
. Lorsque vous utilisezls
sur GNU / Linux, vous utilisez le GNUls
qui a été écrit à partir de zéro pour être le même quels
. Cependant, tous les logiciels GNU ne sont pas exactement les mêmes que leurs homologues Unix. Maintenant qu'Unix est devenu essentiellement BSD, les distributions GNU / Linux peuvent également contenir la version BSD de cet outil. Par exemple,bsdtar
ettar
venez à l'esprit.tl; dr: Ils ne sont pas exactement le même code, mais ils sont pour la plupart exactement identiques.
la source
ps
c'est l'exemple le plus ennuyeux auquel je puisse penser. Différents commutateurs sur différents systèmes (Linux, AIX et Solaris). Format de sortie également différent. Bien que le but de cette commande soit le même sur tous les systèmes.Vous n'avez pas spécifié de quel UNIX vous parlez (BSD, System V ...). Il n'y a pas de réponse universelle (UNIX). Chaque variante UNIX a ses propres commandes personnalisées (prenez Mac OS X par exemple), donc même entre UNIX il existe des commandes différentes. Habituellement, les anciennes commandes (comme ls, pwd, cd, cp, mv, rm ...) ont tendance à être les mêmes sur toutes les versions UNIX (y compris Linux).
la source
Ce que vous devez d'abord considérer, c'est que les commandes sont en fait de petits programmes, en ce sens, ne font pas nécessairement partie du système d'exploitation si vous divisez les cheveux. Les anciens et les classiques existent depuis longtemps et sont inclus dans la plupart des systèmes * nix. Le degré de "complet" du système d'exploitation dépend de ce qui est fourni avec le package.
À titre d'exemple, la plupart des CD de récupération / d'urgence à partir desquels vous pouvez démarrer contiennent une distribution Linux mince, vous constaterez que certaines commandes typiques peuvent ne pas figurer dans ces systèmes, uniquement parce qu'elles ne seraient pas nécessaires dans la plupart des cas.
la source
Sur Solaris, il vous suffit d'ajouter
/usr/gnu/bin
à votre chemin ou de l'échanger/usr/bin
et vos ensembles de commandes seront très similairesla source