J'ai un script.sh le fichier et le type de ce fichier sont shellscript file. Je veux faire de ce fichier un fichier exécutable application/x. Comment puis-je le faire?
Vous pouvez marquer le fichier comme exécutable:
chmod +x filename.sh
Vous pouvez ensuite l'exécuter comme ceci:
./filename.sh
Si vous souhaitez utiliser une commande différente pour la 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'
Ouvrir une nouvelle session ou un nouveau type de terminal source ~/.bashrc
dans votre terminal pour postuler.Ensuite, utilisez simplement le nouveau nom pour démarrer le script.
Il y a deux façons de rendre un fichier exécutable:
Méthode GUI:
Cliquez avec le bouton droit sur le fichier et sélectionnez Propriétés.Accédez à l'onglet Autorisations, puis cochez la case Execute: [ ] Allow executing file as program
ou dans Nautilus Program: [ ] Allow this file to run as a program
à Thunar.
Méthode Terminal / Commande:
Vous pouvez soit utiliser:
cd /to/my/required/directory
Puis courez
chmod +x filename.extension
Ou tout simplement courir:
chmod +x /path/to/your/filename.extension
chmod
a également des options plus avancées:
Les espaces doivent montrer qu'il est divisé: - rwx --- ---
La première série de ---
est Utilisateur. Le second est le Groupe et le dernier est Autre (n'importe qui d'autre)
r pour Read, w pour Write et x pour eXecute.
Donc, 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) serait:
-rw- rx- r--
Mais cela serait ajouté à la commande comme:
chmod +rw-rx-r-- /path/to/file.extension
chmod
vous pouvez également le faire en chiffres. Il est basé sur le binaire (je pense, comme c'est 1,2 et 4)
Il y a donc ces chiffres:
Exécuter par l'utilisateur est 100
.Exécuter par groupe est 010
.Exécuter par d'autres is 001
.
Ecrire par l'utilisateur est 200
.Ecrire par groupe est 020
.Ecrire par d'autres is 002
.
Lu par l'utilisateur est 400
.Lu par groupe est 040
.Lu par d'autres is 004
.
Ensuite, vous les additionnez pour obtenir la combinaison souhaitée.
Donc, 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 quelconque, de ne pas l'exécuter) serait:
400 + 040 + 004
et 010
et 200
Cela s'ajoute à 600 + 050 + 004 = 654.
Vous pouvez ensuite exécuter la commande.
chmod +654 /path/to/file.extension
pour le régler.
Et pour définir toutes les autorisations, vous pouvez taper:
chmod +rwxrwxrwx /path/to/file.extension
Ou (c'est un peu plus facile à écrire, mais plus difficile de se souvenir de chacun):
chmod +777 /path/to/file.extension
Enfin, vous pouvez faire:
chmod -777 /path/to/file.extension
Pour retirer toutes les autorisations à tout le monde.
Et:
chmod +300 /path/to/file.extension
Pour ajouter de la lecture et de l'écriture pour l'utilisateur, sans affecter les autres autorisations (par exemple, les autorisations d'exécution).
Ce site web a une petite case à cocher de grille très utile, dans laquelle vous pouvez cocher les options que vous voulez et cela vous donne la commande:
Cependant, toutes les combinaisons possibles ne sont pas judicieuses à utiliser; les principales qui sont utilisées sont les suivantes:
755 - Owner
a tout, et Group
et Other
peut lire et exécuter
700 - Owner
a tout
644 - Owner
peut lire et écrire, et Group
et Other
peut lire
600 - Owner
peut lire et écrire
Et, si vous utilisez des groupes d'utilisateurs non triviaux:
775 - Owner
peut lire et écrire, et Group
et Other
peut lire
770 - Owner
et Group
avoir tout, et Other
peut lire et exécuter
750 - Owner
a tout, et Group
peut lire et exécuter
664 - Owner
et Group
peut lire et écrire, et Other
peut juste lire
660 - Owner
et Group
peut lire et écrire
640 - Owner
peut lire et écrire, et Group
peut lire
777 et 666 sont rarement utilisés, sauf dans /tmp.
Grâce Ilmari Karonen pour signaler ceux d'usage courant!
Exécuter:
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 sur l'éditeur vi, je quitterai l'éditeur vi:
:wq!chmod +x tester12.sh./tester12.sh
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*
NOTE:
- Un script ne doit pas nécessairement se terminer par
.sh
cela peut se terminer en.txt
comme indiqué ici, ou n'ont aucune extension que ce soit. - Au lieu de simplement
+x
(vous seul pouvez exécuter le script), utiliseza+x
ainsi, tous les utilisateurs peuvent exécuter le script. - Le nom du fichier a un
*
ajouté à celui-ci pour indiquer qu'il est exécutable. De plus, le nom du fichier change de couleur en vert sur la plupart des systèmes.
Exécuter un script sans le rendre exécutable
Vous pouvez toujours exécuter un script bash sans le rendre exécutable. Exemple:
$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello World
NOTE:
- Nous créons d'abord un script contenant
echo Hello World
. - Ensuite, nous confirmons le script appelé
file_command.txt
c'est correct. - Enfin, nous exécutons le script en appelant
bash
et en lui passant le nom du script. Lebash
la commande est en fait stockée sous la forme/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'ajouter le shebang
#!/bin/bash
comme la première ligne d'un script. - La création d'un fichier de commandes vous évite de le rendre exécutable avec
chmod +x
ouchmod a+x
.
Ce n’est pas un doublon, car j’ai demandé spécifiquement de le rendre application/x-executable. L’autre question demande simplement d’ouvrir le fichier sh dans le terminal.