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

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:

enter image description here

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), utilisez a+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.

make script executable


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. Le bashla 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 ou chmod a+x.

lié à Comment exécuter des fichiers. sh dans le Terminal?

Duplication possible de Comment exécuter les fichiers .sh?

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.