double-cliquez pour exécuter le fichier .sh


6

GUI:
J'ai changé les permissions d'un fichier sh pour pouvoir le lire, l'écrire et l'exécuter. Je double-cliqué dessus, sélectionné dans Shell / terminal (selon ce qui apparaît en anglais), mais cela ne fonctionna pas. J'ai double-cliqué dessus, j'ai choisi run, mais ça n'a pas fonctionné.

Ligne de commande:
bash *filename*il l'
sh *filename*exécute

Le contenu du fichier est:

#!/bin/bash

# get dirsyncpro home
DIRSYNCPRO_HOME="$(dirname $0)"

# start programm and pass any parameters
java -Xmx512M -jar "$DIRSYNCPRO_HOME/dirsyncpro.jar" $* 

Fonctionne sur l'ordinateur de cette personne:

http://www.knowliz.com/2008/08/how-to-installrun-sh-file-in-linux.html

Que se passe-t-il?

Réponses:


7

Votre test est faux, vous devez pouvoir le lancer sans appeler d’abord un autre shell.

./my_little_script.sh

Et pas

bash my_little_script.sh

Vérifiez également que les autorisations sont correctes.

chmod 755 my_little_script.sh

1

Votre problème est que lorsque vous essayez d'exécuter votre script shell en double-cliquant dessus, votre système l'exécutera par défaut dans votre répertoire personnel.

En arrivant à la ligne

# start programm and pass any parameters
java -Xmx512M -jar "$DIRSYNCPRO_HOME/dirsyncpro.jar" $* 

Le DIRSYNCPRO_HOMEdossier n’est pas celui que vous attendez, votre fichier jar n’est pas trouvé et l’application s’arrête silencieusement. Je pense que si vous codez en dur la valeur de DIRSYNPRO_HOMEvous, vous devriez pouvoir exécuter votre script shell en double-cliquant dessus.


0

Dans Ubuntu, "Terminal" n'existe pas vraiment. Sur mon installation (9.10) je reçois ceci:

Le programme 'Terminal' n'est actuellement pas installé. Vous pouvez l'installer en tapant: sudo apt-get install terminal.app Terminal: commande introuvable

Je ne suis pas sûr que ce soit le cas pour vous, mais s'il s'agit d'essayer de remplacer le paramètre select de "Termianl" par "gnome-terminal".


2
Je pense que "Terminal" dans ce contexte est une capacité de Gnome / freedesktop, pas une application spécifique. similaire au concept de paquets virtuels d'Apt, gnome-terminal et urxvt ainsi que d'autres paquets "fournissent" la capacité de terminal. ma machine virtuelle karmique est actuellement hors ligne, mais je pense que de telles fonctionnalités sont définies dans les fichiers * .desktop sous / usr / share / applications ou similaire.
Quack Quackote

Le terminal en portugais brésilien peut être Shell en anglais américain. C'est là que vous tapez des commandes Linux.
Delirium tremens

1
@ Delirium: non, la coquille est quelque chose de différent. terminal est ce qui affiche la sortie des programmes en ligne de commande; shell est ce qui fournit et interprète la ligne de commande. gnome-terminal et PuTTY sont des terminaux; bash et tcsh sont des coquillages. où vous tapez les commandes linux comprend généralement un shell et un terminal.
Quack Quotote

Googler pour un double clic sh a pour résultat "Je pourrais exécuter le script depuis le terminal." - linuxforums.org/forum/redhat-fedora-linux-help/… "Vous courriez dans un terminal." - ubuntuforums.org/archive/index.php/t-1107371.html "Il est destiné à être utilisé via un terminal:" - cerebrux.comli.com/2clickupdate/english-version "comment puis-je le faire pour qu'il fonctionne terminal "- linuxquestions.org/questions/linux-general-1/… Les gens utilisent Terminal tout le temps. Comment se fait-il que ce soit faux?
Delirium tremens

1
@ Delirium: ce ne sont que deux choses étroitement liées, mais nettement différentes. le terminal vous donne une fenêtre pour lancer le shell; le shell interprète votre commande et exécute d'autres programmes; le terminal affiche les résultats de ces programmes.
Quack Quotote

0

Le fichier readme de dirsyncpro indique qu'il doit être exécuté en ligne de commande sous tous les systèmes d'exploitation non Windows. J'évitais d'exécuter le fichier jar, mais il n'y a pas d'autre moyen.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.