web-dev-qa-db-fra.com

Comment faire un fichier exécutable?

Comment puis-je créer mon fichier pour pouvoir double-cliquer dessus et le lancer. C'est un script .sh, mais j'ai aussi des fichiers qui disent:

executable (application/x-executable)

dans la description de ce qu'ils sont.

Je ne peux en lancer aucun depuis le terminal ou en double-cliquant.

Si possible, j'aimerais un moyen d'utiliser l'interface graphique ou un terminal, mais pas une combinaison des deux.

Voici une capture d'écran de ce que je vois lorsque je clique avec le bouton droit de la souris, puis sur Propriétés. Le fichier d'abord:

properties of executable file

Et le script Shell ici:

properties of Shell script

NB: j’accepte le fait que c’est un doublon (je le cherchais, mais je n’ai pas pu le trouver. J'ai donc demandé à + y répondre, en espérant que je le retrouverais). Cependant, je ne pense pas que la question des fichiers .desktop est un doublon.

26
Tim

Il existe deux manières de rendre un fichier exécutable:

Méthode graphique:

Allez sur l'onglet autorisations, puis cochez la case Execute: [✓] Autoriser l'exécution du fichier en tant que programme.

Méthode en ligne de commande:

Il suffit de courir:

chmod +x /path/to/your/file.txt

Notez que chmod possède également des options plus avancées. Il accepte trois groupes d'options, représentés par --- --- ---. Le premier ensemble de --- est User. Le second est groupe et le dernier est autre (tout le monde).

r signifie Read, w pour Write et x pour eXecute.

Autoriser tout le monde à le lire, mais seul le groupe à exécuter et l'utilisateur à le lire et l'écrire serait -rw- rx- r--. Ceci serait ajouté à la commande en tant que:

chmod +rw-rx-r-- /path/to/file.extension

chmod peut également le faire en chiffres. Il est basé sur le binaire.

Donc, il y a ces chiffres:

Exécuter par l'utilisateur est 100. Exécuter par groupe est 010. Exécuter par un autre est 001

Ecrivez par l'utilisateur est 200. Écrire par groupe est 020. Ecrivez par un autre est 002.

Lu par l'utilisateur est 400. Lire par groupe est 040. Lu par les autres est 004.

Ensuite, vous ajoutez ces éléments pour obtenir la combinaison souhaitée.

Donc, permettre à tout le monde de le lire, mais seul le groupe à exécuter et l'utilisateur à l'écrire serait 400 + 040 + 004 et 010 et 200

Cela ajoute à 600 + 050 + 004 = 654.

Vous pouvez ensuite exécuter la commande.

chmod +654 /path/to/file.extension

pour le définir. Donc, pour définir toutes les autorisations que vous pouvez exécuter:

chmod +rwxrwxrwx /path/to/file.extension

ou

chmod +777 /path/to/file.extension

Enfin, vous pouvez faire:

chmod -777 /path/to/file.extension

Supprimer toutes les autorisations de tout le monde.

Et:

chmod +300 /path/to/file.extension

Pour ajouter en lecture et en écriture à l'utilisateur, sans affecter les autres autorisations (par exemple, les autorisations d'exécution).

This website a un petit outil très utile, grâce auquel vous pouvez cocher les options que vous voulez et vous donner la commande:

Cependant, toutes les combinaisons possibles ne sont pas judicieuses; les principaux utilisés sont les suivants:

  • 755 - Owner a tout, et Group et Other peuvent lire et exécuter

  • 700 - Owner a tout

  • 644 - Owner peut lire et écrire, et Group et Other peut lire

  • 600 - Owner sait lire et écrire

Et si vous utilisez des groupes d'utilisateurs non triviaux:

  • 775 - Owner peut lire et écrire, et Group et Other peuvent lire

  • 770 - Owner et Group ont tous, et Other peut lire et exécuter

  • 750 - Owner a tout, et Group peut lire et exécuter

  • 664 - Owner et Group peuvent lire et écrire, et Other peut simplement lire

  • 660 - Owner et Group peuvent lire et écrire

  • 640 - Owner peut lire et écrire, et Group peut lire

777 et 666 sont rarement utilisés, sauf dans /tmp.

Merci Ilmari Karonen pour soulignant ceux d'usage courant!

48
Tim