12
votes

Linux: Exécutez un binaire dans un script

Je veux exécuter un programme via un script. normalement je tape ./ programme code> dans la coque et le programme commence.

Mon script ressemble à ceci: P>

#!/bin/sh
cd  /home/user/path_to_the_program/
sh program


0 commentaires

5 Réponses :


0
votes

Vous n'avez pas besoin du "sh" ici. Il suffit de mettre "programme" sur la dernière ligne par elle-même.


4 commentaires

Il me dit: "Programme: non trouvé"


OK, y a-t-il un moyen de l'exécuter via un script sans le mettre à la voie?


Oui. Utilisez "./program" une fois dans le répertoire ou écrivez le chemin complet, quelque chose comme "/ home / utilisateur / path_to_the_program / programme". Assurez-vous que le programme est exécutable (utilisez Chmod pour cela.)


Veuillez expliquer pourquoi le hs n'est pas nécessaire.



14
votes

si ./ programme fonctionne dans la coquille, pourquoi ne pas l'utiliser dans votre script? XXX

SH Programme LANCE SH TO Essayez d'interpréter programme en tant que script shell. Très probablement, ce n'est pas un script, mais un autre fichier exécutable, c'est pourquoi il échoue.


2 commentaires

Cela a fonctionné mais je suis incapable de comprendre pourquoi cela fonctionne de cette façon, mais si je l'exécute comme . / home / utilisateur / chemin_to_program / programme il donne une erreur


@Vibhanshubiswas Les parties probablement de votre script s'appuient sur le répertoire de travail actuel étant le répertoire où le script est.



2
votes

Vous n'avez pas besoin du sh et on dirait que vous n'avez pas le chemin d'accès au programme dans votre $ chemin .

Essayez ceci: xxx


1 commentaires

Il serait préférable que l'utilisation de 'sh' ait été expliquée. Pourquoi ça marche-t-il avec 'sh'?



0
votes

Cela devrait suffire:

/home/user/path_to_the_program/program
  • bit exécutable li>
  • Shebang Ligne du programme (s'il s'agit d'un script) LI> ul> p>


2 commentaires

Donner le chemin peut ne pas fonctionner si le programme dépend des chemins relatifs de son annuaire actuel. Par exemple, le programme pourrait dépendre des fichiers d'entrée qui figurent dans le même répertoire que le programme.


Indépendamment de la manière dont cela est fait, le chemin complet doit venir de / quelque part / - sinon sur le chemin, puis via la ligne Shebang, sinon là, il doit être explicitement défini via certains moyens.



3
votes

Lorsque vous tapez xxx pré>

la coque tente d'exécuter le programme en fonction de la détermination de la manière dont il détermine le fichier doit être exécuté. S'il s'agit d'un binaire, cela tentera d'exécuter le sous-programme d'entrée. Si le shell détecte, il s'agit d'un script, par exemple par l'utilisation de p> xxx pré>

ou p> xxx pré>

ou plus généralement P>

sh program


0 commentaires