web-dev-qa-db-fra.com

Comment rendre un fichier (par exemple, un script .sh) exécutable, de sorte 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 ce fichier en tant que fichier application/x-executable. Comment puis-je le faire?

229
Ziyaddin Sadigov

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'

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

303
rɑːdʒɑ

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

Méthode graphique:

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

enter image description here

Méthode Terminal/Command:

Vous pouvez soit utiliser:

cd /to/my/required/directory

Puis courir

chmod +x filename.extension

Ou tout simplement courir:

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

chmod possède également des options plus avancées:

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

Le premier ensemble de --- est User. Le second est groupe et le dernier est autre (quelqu'un d'autre)

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

Donc, permettre à tout le monde de le lire, mais seul le groupe à exécuter et l'utilisateur à le lire et l'écrire (mais pour une raison quelconque ne pas exécuter) serait:

-rw- rx- r-- Mais 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 (je pense, comme il est 1,2 et 4)

Donc, il y a ces chiffres:

Exécuter par l'utilisateur est 100. Exécuter par groupe est 010. Exécuter par d'autres 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 (mais pour une raison quelconque ne pas s'exécuter) serait:

400 + 040 + 004 and 010 and 200

Cela ajoute 600 + 050 + 004 = 654.

Vous pouvez ensuite exécuter la commande.

chmod +654 /path/to/file.extension pour le définir.

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 à mémoriser):

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 pour l'utilisateur, sans affecter les autres autorisations (par exemple, les autorisations d'exécution).

Ce site Web a une fonction très utile de case à cocher dans la grille: vous pouvez cocher les options de votre choix et vous donner la commande suivante:

enter image description here

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!

34
Tim

Courir:

chmod +x /path/to/file.sh

Pour le rendre non exécutable, lancez:

chmod -x /path/to/file.sh

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

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
7
Jim