Question :Quelles sont les choses fondamentales que je dois savoir pour exécuter un script shell ? De plus, lorsque j'exécute mon script shell, j'obtiens le message d'erreur "Autorisation refusée". Comment puis-je résoudre ce problème ?
Répondre :Passons en revue les 4 choses fondamentales que vous devez savoir sur l'exécution d'un script shell.
1. Localisez l'exécutable du shell et donnez-lui comme she-bang # !
Identifiez le chemin complet de l'emplacement d'installation du shell.
$ which sh /bin/sh (or) $ which ksh $ which bash
Une fois que vous avez identifié l'emplacement de l'exécutable du shell, donnez-le comme shebang ( #! ) dans la première ligne du fichier shell-script.
$ vim helloworld.sh #!/bin/sh echo "Hello World!"
2. Attribuez l'autorisation d'exécution au fichier de script Shell
Si vous n'avez pas l'autorisation d'exécution sur le script, vous obtiendrez le message d'erreur "Autorisation refusée" comme indiqué ci-dessous.
$ ./helloworld.sh bash: ./helloworld.sh: Permission denied
Attribuez l'autorisation d'exécution au fichier de script à l'aide de la commande chmod comme indiqué ci-dessous.
$ chmod u+x helloworld.sh
Si vous souhaitez donner l'autorisation d'exécution au groupe et à d'autres, procédez comme indiqué ci-dessous.
$ chmod 755 helloworld.sh
Remarque : Vous pouvez également faire cela comme un processus automatique. c'est-à-dire que chaque fois que vous ouvrez un fichier de script shell, les deux choses requises - ajouter le shebang et donner l'autorisation d'exécution peuvent être effectuées automatiquement à l'aide du plugin bash-support.vim. Reportez-vous à notre article précédent Faire de Vim votre IDE Bash à l'aide du plugin bash-support pour plus de détails.
3. Exécutez le script en spécifiant le chemin absolu ou relatif
Vous pouvez exécuter un script shell en utilisant le chemin absolu ou le chemin relatif.
Exécutez le script en spécifiant le chemin absolu comme indiqué ci-dessous.
$ /home/ramesh/scripts/helloworld.sh Hello World!
Exécution du script en spécifiant le chemin relatif comme indiqué ci-dessous.
$ cd /home/ramesh/ $ ./scripts/helloworld.sh Hello World! (or) $ cd /home/ramesh/scripts $ ./helloworld.sh Hello World!
4. Exécuter le script comme une commande Linux normale
Vous pouvez également exécuter un script sans spécifier le chemin complet, le chemin absolu ou le chemin relatif. Pour ce faire, ajoutez le répertoire où se trouve tout le script shell à votre variable d'environnement PATH comme indiqué ci-dessous.
Par exemple, une fois que j'ai ajouté /home/ramesh/scripts à la variable d'environnement PATH, je peux exécuter le script depuis n'importe quel répertoire.
$ export PATH=$PATH:/home/ramesh/scripts $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ramesh/scripts $ cd /go/to/anydirectory $ helloworld.sh Hello World!