web-dev-qa-db-fra.com

Le script Bash ne fonctionne pas depuis Nautilus, mais depuis un terminal

Avant d'ajouter plus de détails à ma question, je dois dire quelque chose de très important:

Oui, l'option "Autoriser l'exécution du fichier en tant que programme" est activée dans mon script.

La question elle-même:

Pour des raisons de programmation (bibliothèques partagées), je ne peux pas exécuter mon programme uniquement à partir de l'exécutable, car je dois accéder à LD_LIBRARY_PATH avant d'exécuter le programme. J'ai créé ce script pour cela (en gardant à l'esprit que c'est la première fois que j'écris un script):

#!/bin/bash
#Get the current directory and append the SO's location
currentDir=$(pwd)'/libs/'

#Change the library path
export LD_LIBRARY_PATH=$currentDir

#Run the program
./program

Après avoir exécuté ceci à partir du terminal, j’ai pensé que cela fonctionnait, qu’il n’y avait aucune erreur et que le programme ne se plaignait pas de bibliothèques partagées. Mais malheureusement, si j'essaye de double-cliquer sur le fichier .sh de Nautilus, rien ne se passe. Le pire aussi, c'est que puisque je l'utilise depuis l'interface graphique, je n'ai aucune idée de l'erreur qu'elle génère. J'exécute Ubuntu 14.04 et l'exécutable est un programme C++ utilisant les bibliothèques SFML (oui, je pourrais juste avoir les dépendances, mais SFML n'est pas couramment installé sur les ordinateurs Linux, et c'est d'ailleurs le cas).

7
Orfby

La propriété Allow executing file as program n'est pas assez.

Modifier les paramètres dans les préférences Nautilus

enter image description here


ou via terminal:

gsettings set org.gnome.nautilus.preferences executable-text-activation ask
8
A.B.