386 votes

Comment rendre un fichier (par exemple un .sh script) exécutable, afin qu'il puisse être exécuté à partir d'un terminal.

J'ai un fichier script.sh et le type de ce fichier est un fichier shellscript. Je veux faire de ce fichier une application/x-exécutable. Comment puis-je le faire ?

533voto

Zian Choy Points 1510

Vous pouvez marquer le fichier comme exécutable :

chmod +x filename.sh

Vous pouvez ensuite l'exécuter comme ceci :

./filename.sh

Si vous voulez utiliser une commande différente pour le démarrer, vous pouvez ajouter un alias :

gedit ~/.bashrc

Ajoutez ceci à la fin du fichier :

alias <new name>='/home/<full path to script>/filename.sh'

Ouvrez une nouvelle session de terminal ou tapez source ~/.bashrc dans votre terminal pour postuler. Ensuite, utilisez simplement le nouveau nom pour lancer le script.

54voto

Tim Points 30349

Il existe deux façons de rendre un fichier exécutable :

Méthode GUI :

Cliquez avec le bouton droit de la souris sur le fichier et sélectionnez Propriétés. Allez dans l'onglet des autorisations, puis cochez la case Execute: [ ] Allow executing file as program ou dans Nautilus Program: [ ] Allow this file to run as a program à Thunar.

enter image description here

Terminal / Méthode de commande :

Vous pouvez soit utiliser :

cd /to/my/required/directory

Ensuite, exécutez

chmod +x filename.extension

Ou juste courir :

chmod +x /path/to/your/filename.extension

chmod dispose également de quelques options plus avancées :

Les espaces servent à montrer qu'il est divisé : - rwx --- ---

La première série de --- est un utilisateur. Le deuxième est Groupe et le dernier est Autre (n'importe qui d'autre).

r signifie Read (lecture), w signifie Write (écriture) et x signifie eXecute (exécution).

Ainsi, pour permettre à tout le monde de le lire, mais seulement au Groupe de l'exécuter et à l'Utilisateur de le lire et de l'écrire (mais, pour une raison quelconque, de ne pas l'exécuter), ce serait :

-rw- rx- r-- Mais cela serait ajouté à la commande comme :

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

chmod peut aussi le faire en chiffres. C'est basé sur le binaire (je pense, car c'est 1,2 et 4).

Il y a donc ces chiffres :

L'exécution par l'utilisateur est 100 . L'exécution par groupe est 010 . Exécuter par d'autres est 001 .

L'écriture par l'utilisateur est 200 . L'écriture par groupe est 020 . Écrire par d'autres est 002 .

La lecture par l'utilisateur est 400 . Lire par groupe est 040 . Lu par d'autres est 004 .

Ensuite, vous les additionnez pour obtenir la combinaison souhaitée.

Ainsi, pour permettre à tout le monde de le lire, mais seulement au Groupe de l'exécuter et à l'Utilisateur de l'écrire (mais pour une raison ou une autre de ne pas l'exécuter), ce serait :

400 + 040 + 004 y 010 y 200

Le total est de 600 + 050 + 004 = 654.

Vous pourriez alors exécuter la commande.

chmod +654 /path/to/file.extension pour le régler.

Et pour définir toutes les permissions, vous pouvez taper :

chmod +rwxrwxrwx /path/to/file.extension

Ou (c'est un peu plus facile à écrire, mais plus difficile à retenir pour chacun d'eux) :

chmod +777 /path/to/file.extension

Enfin, vous pouvez le faire :

chmod -777 /path/to/file.extension

Pour enlever toutes les permissions à tout le monde.

Et :

chmod +300 /path/to/file.extension

Pour ajouter la lecture et l'écriture pour l'utilisateur, sans affecter les autres permissions (par exemple, les permissions d'exécution).

Ce site web dispose d'une petite grille de cases à cocher très utile, qui vous permet de cocher les options que vous souhaitez et vous donne la commande :

enter image description here

Cependant, toutes les combinaisons possibles ne sont pas judicieuses à utiliser ; les principales utilisées sont les suivantes :

755 - Owner a tout, et Group y Other peut lire et exécuter

700 - Owner a tous

644 - Owner sait lire et écrire, et Group y Other peut lire

600 - Owner sait lire et écrire

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

775 - Owner sait lire et écrire, et Group y Other peut lire

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

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

664 - Owner y Group sait lire et écrire, et Other peut juste lire

660 - Owner y Group sait lire et écrire

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

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

Merci Ilmari Karonen para en indiquant ceux qui sont d'usage courant !

8voto

Liso Points 14200

Cours :

chmod +x /path/to/file.sh

Pour le rendre non exécutable, exécutez :

chmod -x /path/to/file.sh

Par exemple, j'ai créé .sh fichier :

vi tester12.sh

Après avoir écrit du code dans l'éditeur vi, je quitte l'éditeur vi :

:wq!
chmod +x tester12.sh
./tester12.sh

0voto

WinEunuuchs2Unix Points 91128

Laissez tous les utilisateurs exécuter votre script.

Comme indiqué, vous pouvez définir le bit d'exécution du fichier pour le rendre exécutable avec chmod +x . Mais vous pouvez également utiliser chmod a+x :

$ ll file_command.txt
-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt

$ chmod a+x file_command.txt

$ ll file_command.txt
-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*

NOTES :

  • Un script n'a pas besoin de se terminer par .sh elle peut se terminer par .txt comme indiqué ici, ou n'ont aucune extension.
  • Au lieu de simplement +x (vous seul pouvez exécuter le script), utilisez a+x pour que tous les utilisateurs puissent exécuter le script.
  • Le nom du fichier a un * qui lui est accolé pour indiquer qu'il est exécutable. Le nom du fichier change également de couleur pour devenir vert sur la plupart des systèmes.

make script executable


Exécuter un script sans le rendre exécutable.

Vous pouvez toujours exécuter un bash script sans le rendre exécutable. Par exemple :

$ echo "echo Hello World" > file_command.txt

$ cat file_command.txt
echo Hello World

$ bash file_command.txt
Hello World

NOTES :

  • D'abord nous créons un script contenant echo Hello World .
  • Puis nous confirmons le script appelé file_command.txt est correct.
  • Enfin, nous lançons le script en appelant bash et en lui passant le nom du script. Le site bash est en fait stockée comme /bin/bash et c'est un exécutable sur tous les systèmes Ubuntu.
  • La création d'un fichier de commandes vous évite d'avoir à ajouter l'option shebang #!/bin/bash comme première ligne d'un script.
  • Créer un fichier de commandes vous évite de le rendre exécutable avec chmod +x ou chmod a+x .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X