Je suis vraiment nouveau dans l'utilisation du terminal et j'ai suivi le guide à l'aveuglette sans savoir pourquoi il existe et que fait-il ... bien que ces guides m'aident à installer le lecteur vmware.
celui-ci a fonctionné pour moi depuis que le fichier est exécutable, en cliquant sur le fichier et en cours d'exécution .. dites seulement que l'accès root est nécessaire.
sudo sh vmwareplayer.txt
(renommé pour être plus court)
D'une manière ou d'une autre, je sais ce qui sudo
fait mais que fait sh
-il? Sans cela, il va "vmwareplayer.txt introuvable". Et pour les fichiers groupés, pourquoi se termine-t-il par .txt?
command-line
Gabino Garcia
la source
la source
sh
fait dans une commande qui appelle un script. Cette question est de savoir comment un#!
travaille dans un fichier de script . Totalement différent.Réponses:
sh signifie "shell" et shell est l'ancien interpréteur de ligne de commande de type Unix. Un interpréteur est un programme qui exécute des instructions spécifiques écrites dans un langage de programmation ou de script. Donc, en gros, vous dites "Exécutez ce fichier pour moi".
Vous devez comprendre que Linux ne regarde pas vraiment l'extension du fichier afin de déterminer ce qu'est le fichier (ou programme). Donc, tant que le contenu de ce fichier est écrit d'une manière que l'interprète sh comprend, cela fonctionnera. Mais juste pour des raisons de lisibilité, ces fichiers ont normalement une extension .sh et je n'ai aucune idée de ce que le développeur pensait quand il a donné à ce fichier une extension .txt ..
la source
Dans Ubuntu,
sh
ou/bin/sh
pointe simplement versdash
.sh
est censé exécuter l'interpréteur de commandes par défaut, qui estdash
pour Ubuntu. 1dash
fait référence au shell Debian Almquist.Un shell est un interpréteur de ligne de commande pour le système. Il y a plusieurs autres coquilles comme
bash
,csh
,zsh
etc. Voici un bref extrait de la page de l' homme dedash
:Il y a beaucoup de tutoriels sur les shells Linux, vous pouvez commencer par cet article Wikipedia .
Venant à votre question, si vous écrivez
sh file
,dash
s'exécutefile
pour vous.la source
Juste un mot de commentaire:
sudo
exécute une commande avec desroot
privilèges. Lorsque vous appelezsudo vmwareplayer.txt
ce qui signifie clairement "exécuter la commande vmwareplayer.txt avec un accès root" et échoue, car il n'y a pas un tel programme.sudo sh command
signifie "exécutersh command
avec les privilèges root"et
sh command
exécutera une commande sous Bourne shell.Une nouvelle question se pose. Que sont les coquilles? C'est une question plus longue et vous trouverez quelques informations sur le wiki je suppose.
En attendant, n'oubliez pas que
man
c'est votre meilleur ami.la source
Je crois qu'aucun des répondants précédents n'a répondu à la question que vous avez réellement posée à G., donc je vais essayer. Interposer le
sh
lors de l'exécution d'un programme comme vous l'avez mentionné, exécute le programme dans un sous- shell non interactif . Les shells non interactifs se comportent différemment (par exemple l' initialisation ) du shell interactif standard que vous utilisiez lorsque vous exécutiez le programme.Honnêtement, je ne sais pas quel effet pratique cela a. Comme vous l'avez remarqué, il
sh vmwareplayer.txt
est (généralement) capable d'exécuter quelque chose dans le même dossier, où le simple fait de tapervmwareplayer.txt
(généralement) ne le fera pas. Cela doit faire de l'environnement shell; ce n'est pas une qualité native du shell ou du sous-shell lui-même. Vous pouvez bien sûr exécuter directement un programme dans le répertoire courant en tant que root:sudo ./vmwareplayer.txt
. D'après mon expérience, cela fonctionne toujours aussi biensudo sh vmwareplayer.txt
. J'espérais que quelqu'un viendrait et expliquerait pourquoi le sous-shell était parfois souhaitable.la source
L'
sh
utilitaire est un interpréteur de langage de commande / une commande qui exécute des commandes lues à partir d'une chaîne de ligne de commande, de l'entrée standard ou d'un fichier spécifié. L'application garantit que les commandes à exécuter sont exprimées dans le langage décrit dans Shell Command Language.Par exemple:
Ce qui suit exécute une commande shell à partir d'une chaîne:
sh -c "cat myfile.txt"
c'est-à - dire exécute la commande -cat myfile.txt
Reportez-vous au lien suivant pour une explication détaillée: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
la source