Lancer une application depuis la console

Bonjour,

J’essaie de lancer une application depuis la console en mode utilisateur puisqu’elle est installée comme tel mais ça ne fonctionne pas.

Je me place dans le dossier de cette application là où se trouve l’exécutable et voilà ce que la console donne :

~/Pixum/Univers photo Pixum$ Univers\ photo\ Pixum bash: Univers photo Pixum : commande introuvable

J’ai bien essayé ceci sans résultat non plus :

~/Pixum/Univers photo Pixum$ sh Univers\ photo\ Pixum.sh sh: 0: Can't open Univers photo Pixum.sh

pas plus que ceci :

~/Pixum/Univers photo Pixum$ sh "Univers\ photo\ Pixum" sh: 0: Can't open Univers\ photo\ Pixum
Mais quand je vais dans le dossier et que je double-clique sur l’icône correspondant à “Univers phot Pixum”, l’application se lance. Les propriété du fichier m’indique qu’il peut être exécuté.

Je veux lancer l’application de cette manière pour éventuellement recevoir un message d’information parce que l’application ne se lance pas correctement.

Merci de m’aider.

Tu te trompes juste sur le nom de l’executable.
Que dit ls -l ~/Pixum/Univers\ photo\ Pixum ?
Tu dois avoir le bon nom du fichier dans la liste, sans doute en jaune.

Bonjour,

Et comme ça :

~/Pixum/Univers photo Pixum$ **./**Univers\ photo\ Pixum

Bonsoir jcsm33,

Ah oui. Ça fonctionne.

Merci.

Bonsoir mattotop,

Le nom de fichier est bon. Avec la commande suggérée par jsm33, ça fonctionne.

J’avais appris à utiliser ce ./ avec des fichiers .pl mais je n’ai pas songé à l’essayer ici :expressionless:

Merci pour ta suggestion.
A+

Par contre si le fichier “Univers photo Pixum.sh” est bien un exécutable shell, la commande sh Univers\ photo\ Pixum.sh aurait dû aboutir, non ?

Quelqu’un a une idée sur le pourquoi ça n’a pas fonctionné, par curiosité ?

Bonsoir Sputnik93,

En théorie, ça aurait été une possibilité mais je l’ai tentée sans résultat et même en renommant le fichier en lui ajoutant un .sh en fin de nom, ça n’a rien donné.

Pourquoi ? Comment ?
Je n’en sais rien. je ne suis pas assez au fait de la ligne de commande :expressionless:

Ah OK c’est parce que le fichier Univers photo Pixum**.sh** n’existait pas, j’avais mal lu.

Sinon, concrètement, si on appelle un fichier exécutable en écrivant **./**executable c’est pour dire à bash de chercher executable dans le répertoire courant (notation: ./). Quand on ne précise pas le chemin d’un exécutable, bash va le chercher dans les répertoires listés dans la variable $PATH (sans cette variable on devrait écrire /usr/bin/ls au lieu de ls, parce que /usr/bin est dans $PATH).

Pour savoir comment exécuter un fichier exécutable (par exemple un script shell ou perl), bash lit la première ligne du script, qui doit normalement contenir un shebang (#!/bin/bash ou #!/usr/bin/perl) lui indiquant à quel exécutable (bash ou perl) il doit donner le contenu du script. En l’absence de shebang on peut indiquer nous-mêmes à bash avec quel exécutable lire le script (si on est sûr qu’il s’agit d’un script perl, on peut écrire perl script). Pour les scripts shell c’est facultatif, bash va naturellement interpréter tout ce qui est écrit dans le script comme des commandes shell.

Et dans le shebang, le chemin complet de l’exécutable (bash ou perl) est facultatif aussi tant que ce chemin est dans la variable $PATH.

Super l’info. Merci.