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


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


182
2017-12-16 12:27


origine


relatif à Comment exécuter des fichiers .sh dans Terminal? - TuKsn
Duplicata possible de Comment exécuter des fichiers .sh? - karel
Ce n'est pas un doublon, car j'ai demandé spécifiquement à le rendre exécutable par application / x. L'autre question demande simplement d'ouvrir le fichier sh dans le terminal. - Ziyaddin Sadigov


Réponses:


Eh bien, vous pouvez le faire en faisant comme

chmod +x filename.sh

donc il s'exécutera quand vous l'appellerez

./filename.sh

et vous pouvez également accéder à ce script en tant qu’application.

ouvrez votre terminal et tapez comme ci-dessous à partir de votre répertoire personnel.

gedit .bashrc

puis dans le fichier ouvert, tapez cette dernière ligne.

alias <Name_with which you wanna call it >='./filename.sh'

sauver et fermer .

Puis tapez ceci dans votre terminal source ~/.bashrc appliquer les modifications que vous avez apportées. puis tapez simplement le nom que vous y avez donné après l'alias pour accéder à votre script.

assurez-vous que vous avez placé dans le répertoire d'accueil.

autre

alias <Name_with which you wanna call it >='./<path to your script >.sh'

J'espère que cela pourra aider.


244
2017-12-16 12:33



Savez-vous comment utiliser la commande sudo après avoir saisi la commande: "alias command1 = '/home/user_name/dir/script.sh'. Dans la mienne, cela fonctionne sans sudo, mais pas avec. - Aditya
Vous devez redémarrer bash après avoir modifié le fichier .bashrc: exec bash pour redémarrer bash. - Sampath Perera
Pourquoi le fichier exécutable est-il ./filename.sh et pas seulement filename.sh? - user1993
@ user1993 oui, je cherche aussi un moyen de le rendre exécutable juste en filename et pas ./filename - MycrofD
@ user1993 Généralement, en utilisant ./filename.sh spécifie un fichier dans le répertoire en cours et en utilisant filename.sh spécifie un fichier dans le répertoire en cours ou dans tout répertoire de PATH. La première utilisation supprime toute incertitude sur le fichier auquel on accède. Dans ce cas, vous essayez d'exécuter le script avec bash ou un autre interpréteur (en supposant #!/bin/bash en première ligne dans votre script) en entrant simplement le nom du fichier. Cette utilisation nécessite que le répertoire soit spécifié. Alternativement, vous pouvez essayer bash filename.sh qui semble fonctionner avec des répertoires non spécifiés. - a505999


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

Méthode GUI:

Allez dans l'onglet permissions, cochez la case `Execute: [] Autorisez l'exécution du fichier en tant que programme.

enter image description here

Méthode Terminal / Commande:

Vous pouvez soit utiliser:

cd /to/my/required/directory

Puis courir

chmod +x filename.extension

Ou lancez simplement:

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 l'utilisateur. Le second est Group et le dernier est Autre (n'importe qui)

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

Donc, pour 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 s'exécutent pas) serait:

-rw- rx- r-- Mais cela serait ajouté à la commande en tant que:

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

chmod peut également faire cela en chiffres. Il est basé sur le binaire (je pense, car il est 1,2 et 4)

Il y a donc ces chiffres:

Exécuter par l'utilisateur est 100. Exécuter par groupe est 010. Execute by other is 001

Ecrire par utilisateur est 200. Ecrire par groupe est 020. Ecrire par d'autres est 002.

Lire par utilisateur est 400. Lire par groupe est 040. Lire par d'autres est 004.

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

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

400 + 040 + 004 et 010 et 200

Cela correspond à 600 + 050 + 004 = 654.

Vous pouvez alors exécuter la commande.

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

Et pour définir toutes les autorisations que 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 prendre toutes les autorisations loin de tout le monde.

Et:

chmod +300 /path/to/file.extension

Pour ajouter en lecture et en écriture à l'utilisateur, sans affecter les autres autorisations (par exemple, les autorisations d'exécution).

Ce site Une petite case à cocher de grille très utile vous permet de cocher les options souhaitées et vous donne la commande suivante:

enter image description here

Cependant, toutes les combinaisons possibles ne sont pas judicieuses à utiliser; les principaux utilisés sont les suivants:

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 OtherPeux 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 OtherPeux 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 GroupPeux lire

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

Merci Ilmari Karonen pour faire remarquer ceux d'usage courant!


31
2018-06-18 12:22



Est-ce qu'il n'est pas basé sur octal (8-base) au lieu de binaire (basé sur 2)? En binaire, vous ne pouvez avoir que 0 et 1, tandis qu'en octal, vous pouvez avoir 0, 1, ... 6, 7 - Justinas
@Justinas binary en ce que 7 = 4 + 2 + 1 - 111 représente Read et Write et Execute. - 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éé .sh fichier:

vi tester12.sh

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

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

7
2018-06-18 12:39