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 ?
Réponses
Trop de publicités?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.
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.
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 :
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 !
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), utiliseza+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.
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 sitebash
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
ouchmod a+x
.