que fait l'ajout de sh?

10

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 sudofait 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?

Gabino Garcia
la source
C'est un interprète de langue
Tachyons
@Tachyons Si vous connaissez la réponse à la question, expliquez-la plus en détail et postez-la comme réponse! :)
Alvar
Voir aussi une question connexe avec des réponses expliquant en profondeur les interprètes (tels que sh, bash) et les shebangs, etc.
1
@Mik Ce n'est pas un double de cette question. Cela demande ce qui shfait dans une commande qui appelle un script. Cette question est de savoir comment un #!travaille dans un fichier de script . Totalement différent.
Eliah Kagan
@EliahKagan Oui, j'étais probablement trop hâtif pour le citer comme doublon: j'aurais dû mettre «lié, mais pas dupliqué» en me référant à l'autre réponse. Vous avez raison, comme d'habitude; si vous voulez demander à un modérateur de rouvrir ça va. J'ai déjà voté pour la réouverture.

Réponses:

16

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 ..

Gladen
la source
5

Dans Ubuntu, shou /bin/shpointe simplement vers dash. shest censé exécuter l'interpréteur de commandes par défaut, qui est dashpour Ubuntu. 1 dash 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, zshetc. Voici un bref extrait de la page de l' homme de dash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

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, dashs'exécute filepour vous.

enflammer
la source
C'est une bonne explication de ce qu'est sh, mais pas de ce qu'il fait dans la question spécifique ci-dessus.
NilsB
Ajout d'informations supplémentaires, cela devrait suffire maintenant
enflammer
1

Juste un mot de commentaire:

sudoexécute une commande avec des rootprivilèges. Lorsque vous appelez sudo vmwareplayer.txtce 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 commandsignifie "exécuter sh commandavec les privilèges root"

et sh commandexé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 manc'est votre meilleur ami.

Melon
la source
1

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 shlors 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.txtest (généralement) capable d'exécuter quelque chose dans le même dossier, où le simple fait de taper vmwareplayer.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 bien sudo sh vmwareplayer.txt. J'espérais que quelqu'un viendrait et expliquerait pourquoi le sous-shell était parfois souhaitable.

Sel
la source
0

L' shutilitaire 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

shivani1494
la source