Lorsque j'écris la lignedans le terminal, ça fonctionne!Code:~/SAVA/code/user/sava
lorsque j'écris la ligne :dans le terminal ,Code:gnome-terminal ~/SAVA/code/user/sava &
j'ai une erreur: [1] 2605
et un nouveau terminal s'ouvre
Version imprimable
Lorsque j'écris la lignedans le terminal, ça fonctionne!Code:~/SAVA/code/user/sava
lorsque j'écris la ligne :dans le terminal ,Code:gnome-terminal ~/SAVA/code/user/sava &
j'ai une erreur: [1] 2605
et un nouveau terminal s'ouvre
On n'y comprend rien ! Un coup il y a l'esperluette un coup il y a le read, un coup il y a les simples quotes un coup non, bref on va faire court sinon on y passe la journée :
le $ c'est mon prompt :
Code:
1
2
3 $ cat /tmp/test.sh #!/bin/bash ls
lors de l'exécution :Code:$ /tmp/test.sh; read
- apparaît la liste_de_fichiers
- puis, le terminal attend un appui sur ENTRÉE (commande read)
Code:
1
2
3 $ cat bidon.sh #!/bin/bash xterm -e '/tmp/test.sh; read'
lors de l'exécution dans un autre terminal :Code:$ ./bidon.sh
- apparaît la liste_de_fichiers
- puis, le terminal attend un appui sur ENTRÉE (commande read)
Voilà. Et tout fonctionne bien.
Jipété,
je crois que tu lis trop vite et tu passe à coté de certaines choses.
jack-ft, m'a demandé de tester des codes, alors je l'ai fait et lui ai posté le résultat.
Si tu regarde bien mon code entier, tu peux constater qu'il est simple.
je te remercie pour ton code maintenant, mais je ne le comprends pas ...
car je n'arrive pas a identifier mon fichierA et mon fichierB dedans, ni ou chacun s'arrête (je débute)
j'ai édité le dernier message de Jipété, pour mettre en évidence les différents scripts, et leur déroulement.
mais comme je te l'ai déjà dit, pour un lanceur, un autre script n'est pas utile.
il faut créer un fichier lanceur, qui a un certain format, et qui incorporera la commande que tu veux exécuter (c'est-à-dire, lancer un terminal en exécutant (donc -x, ou -e) le script dont tu veux afficher le résultat).
Pour la défense de Jipété, le sujet est franchement pas clair...
dans ton fichier vasy.sh, remplace :
parCode:
1
2 gnome-terminal ./monfichier read
et si besoin installe xterm.Code:xterm -e './monfichier; read'
Ca permettra de voir si ça fonctionne bien.
Je n'ai pas de gnome-terminal sous la main (ni de machine linux, d'ailleurs), donc je ne peux pas tester.
Voici néanmoins quelques pistes:
- essayer en enlevant l'espace avant le '~': gnome-terminal -e '~/SAVA/code/user/sava; read';
- essayer en remplaçant le '~' par sa valeur:
Code:
1
2
3
4 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal -e "${sava_script}" # ou bien, si on suit l'idée de N_BaH gnome-terminal -e "${sava_script}; read"
- essayer avec l'option --working-directory:
Code:
1
2
3
4 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal --working-directory=~/SAVA/code/user -e "./sava" # ou bien, si on suit l'idée de N_BaH gnome-terminal --working-directory=~/SAVA/code/user -e "./sava; read"
Remarque: si tu veux voir le message de echo APRES, il faut peut-être le lancer en background avec la perluette (gnome-terminal ... &).
[EDIT]: Oops... :oops: je n'avais pas vu qu'il y avait une 2ème page de réponse... Cela dit la réponse aux questions que je pose peut permettre de comprendre à quel endroit ça coince...
moi je ferais plutôt :Code:sava_script=$(echo ~/SAVA/code/user/sava)
Code:sava_script="${HOME}/SAVA/code/user/sava"
ok je teste...merci
Bilan de tous les essais:
ouCode:
1
2
3
4
5 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal --working-directory=~/SAVA/code/user -e "./sava" # ou bien, si on suit l'idée de N_BaH gnome-terminal --working-directory=~/SAVA/code/user -e "./sava; read"
même message d'erreur :Code:sava_script="${HOME}/SAVA/code/user/sava"
"l'exécution du processus fils << ./sava; >> a échoué (aucun dossier ou fichier de ce type)
ou
message d'erreur:Code:
1
2
3 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal -e "${sava_script}; read"
"l'exécution du processus fils << home/mod77/SAVA/code/user/sava; >> a échoué (aucun dossier ou fichier de ce type)
par contre:
etCode:
1
2
3 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal -e "${sava_script}"
fonctionnent !! :-)Code:xterm -e './fichierA; read'
Franchement j'ai galéré pour si peu et je ne comprends même pas pourquoi :-(
mon fichierA se résume en ces lignes, maintenant:
et j'aimerais cliquer sur l'icône du fichierA (placé sur le bureau) pour qu'il ouvre le terminal et s'exécute sans en ouvrir un 2e.Code:
1
2
3
4
5 #!/bin/bash # programme de lancement des "lectures de codes" cd ~/SAVA/code/user xterm -e './fichierA; read'
J'ai déjà coché l'autorisation d'exécution comme un programme.
mais lorsque je clic sur fichierA il ouvre "gedit".
J'avais essayé avecmais sans succèsCode:chmod u+x fichierA
Que dois-je changer svp?
Erreur! j'ai modifié mon fichierA,
Seule la question du lancement par le clic reste posée
le cd est important dans ton fichierA ?
car si on peut exécuter directement le fichier sans le cd, il suffit de créer un lanceur (d’ailleurs même avec le cd ça doit fonctionner...).
exemple : https://doc.ubuntu-fr.org/raccourci-...eer_un_lanceur
EDIT : j'arrive pas à executer un cd avant la commande via un lanceur, il faut donc lancer le fichier directement sans le cd.
Etrange que :
fonctionne et pas :Code:
1
2 sava_script=$(echo ~/SAVA/code/user/sava) gnome-terminal -e "${sava_script}"
Code:
1
2 sava_script="${HOME}/SAVA/code/user/sava" gnome-terminal -e "${sava_script}"
Le CD est important oui.
Car fichierA est sur le "Bureau" alors que le fichierB (sava) est dans "~/SAVA/code/user"
Code:
1
2 sava_script="~/SAVA/code/user/sava" gnome-terminal -x /bin/bash -c "${sava_script};read"
BufferBob,
il y a un message : "erreur: impossible d'ouvrir le fichier en lecture"
chez moi ça fonctionne, t'es sûr que le chemin est bon et que sava est bien un fichier exécutable ? (chmod +x comme mentionné plus haut)
BufferBob,
j'ai cliqué droit sur sava la case est bien cochée.
de plus lorsqu'on tape dans le terminal: ./sava il s'exécute...
Après je ne sais pas si cela prouve qu'il est exécutable...
Note, cependant, que ce n'est pas moi qui l'ai créé.
Je pense que la solution est dans le "bashrc" et le code "chmod +x" mais je n'arrive pas à le mettre en place pour la raison évoqué au poste 32...
eh, pas de gros mots, hein !Citation:
j'ai cliqué droit
c'est un forum shell et commandes, ici. :mouarf:
mais, pourquoi ?Citation:
Je pense que la solution est dans le "bashrc"
~/.bashrc intervient à un autre niveau, pas dans l'exécution des scripts.
si tu n'es pas à l'aise avec le terminal, et les commandes, il faut lire la doc.
voir les liens dans ma signature.