Comment exécuter un script shell sans utiliser les commandes “sh” ou “bash”?

J’ai un script shell que je veux exécuter sans utiliser les commandes “sh” ou “bash“. Par exemple:

Au lieu de: sh script.sh

Je veux utiliser: script.sh

Comment puis-je faire ceci?

PS (i) Je n’utilise pas beaucoup le script shell et j’ai essayé de lire des alias, mais je n’ai pas compris comment les utiliser.

(ii) J’ai également lu sur la liaison du script avec un autre fichier dans les variables PATH. J’utilise mon serveur universitaire et je ne dispose pas des permissions nécessaires pour créer un fichier dans ces emplacements.

Ajoutez un “shebang” en haut de votre fichier:

 #!/bin/bash 

Et rendez votre fichier exécutable ( chmod +x script.sh ).

Enfin, modifiez votre chemin pour append le répertoire où se trouve votre script:

 export PATH=$PATH:/appropriate/directory 

(généralement, vous voulez que $HOME/bin stocke vos propres scripts)

Voici quelques conditions préalables à l’utilisation directe du nom du script:

  1. Ajoutez la ligne sha-bang {#!/bin/bash) tout en haut.
  2. Utiliser chmod u+x scriptname rend le script exécutable.
  3. Placez le script dans le dossier /usr/local/bin .
  4. Exécutez le script en utilisant uniquement le nom du script.

Note: La raison pour laquelle j’ai suggéré de le placer dans le dossier /usr/local/bin est que le chemin le plus probable est le chemin déjà ajouté à votre PATH variable .

Mettre à jour:

Si vous n’avez pas access au dossier /usr/local/bin , procédez comme suit:

  1. Créez un dossier dans votre répertoire personnel et appelons-le myscripts .
  2. ls -lart sur votre répertoire personnel, pour identifier le script de démarrage utilisé par votre shell. Il devrait être soit .profile ou .bashrc .
  3. Une fois que vous avez identifié le script de démarrage, ajoutez la ligne suivante dans votre script – export set PATH=$PATH:~/myscript .
  4. Une fois ajouté, sourcez votre script de démarrage ou déconnectez-vous et reconnectez-vous.
  5. Exécutez votre script en utilisant le nom du script.

Assurez-vous simplement qu’il est exécutable, en utilisant chmod +x . Par défaut, le répertoire en cours ne figure pas sur votre PATH, vous devrez donc l’exécuter en tant que ./script.sh ou bien le référencer par un chemin qualifié. Sinon, si vous avez vraiment besoin de script.sh , vous devrez l’append à votre PATH. (Vous ne pouvez peut-être pas modifier le chemin d’access du système, mais vous pouvez presque certainement modifier le PATH de votre environnement actuel.) Cela suppose également que votre script commence par quelque chose comme #!/bin/sh .

Vous pouvez toujours utiliser un alias, qui n’est pas vraiment lié au script shell, mais uniquement au shell, et est simple comme suit:

 alias script.sh='sh script.sh' 

Ce qui vous permettrait d’utiliser simplement simplement script.sh (littéralement – cela ne fonctionnera pas pour tout autre fichier *.sh ) au lieu de sh script.sh .

Vous devez activer le bit exécutable pour le programme.

 chmod +x script.sh 

Ensuite, vous pouvez utiliser ./script.sh

Vous pouvez append le dossier au PATH dans votre fichier .bashrc (situé dans votre répertoire personnel). Ajoutez cette ligne à la fin du fichier:

 export PATH=$PATH:/your/folder/here 

Dans cet exemple, le fichier s’appellera myShell

Tout d’abord, nous devrons créer ce fichier, nous pouvons simplement commencer en tapant ce qui suit:

 sudo nano myShell 

Notez que nous n’avons pas mis l’extension .sh ? C’est parce que lorsque nous l’ myShell depuis le terminal, nous n’aurons qu’à taper myShell pour exécuter notre commande!

Maintenant, dans nano, la première ligne doit être #!/bin/bash vous pouvez alors laisser une nouvelle ligne avant de continuer.

Pour démonstration je vais append un Hello World! base Hello World! réponse

Donc, je tape ce qui suit:

 echo Hello World! 

Après cela, mon exemple devrait ressembler à ceci:

 #!/bin/bash echo Hello World! 

Enregistrez maintenant le fichier, puis exécutez cette commande:

 sudo chmod +x myShell 

Maintenant que le fichier est exécutable, nous pouvons le déplacer dans /usr/bin/ en utilisant la commande suivante:

 sudo cp myShell /usr/bin/ 

Juste pour s’assurer que la machine peut l’exécuter correctement, nous devrons redémarrer la machine

J’ai utilisé sudo shutdown -r now

Félicitations! Notre commande est maintenant terminée! Dans le terminal, on peut taper myShell et ça devrait dire Hello World!

Vous pouvez taper sudo install (nom du script) / usr / local / bin / (ce que vous voulez taper pour exécuter ce script)

ex: sudo install quickcommit.sh /usr/local/bin/quickcommit entrez le mot de passe

maintenant peut fonctionner sans .sh et dans n’importe quel répertoire

Ajouter . (répertoire courant) à votre variable PATH.
Vous pouvez le faire en éditant votre fichier .profile.
mettre la ligne suivante dans votre fichier .profile
PATH=$PATH:.

Veillez simplement à append une ligne Shebang ( #!/bin/bash ) au démarrage de votre script et à rendre le script exécutable (en utilisant chmod +x ).

Voici mon script de sauvegarde qui vous donnera l’idée et l’automatisation:

Serveur: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql etc …

 # Make Shell Backup Script - Bash Backup Script nano /home/user/bash/backupscript.sh #!/bin/bash # Backup All Start mkdir /home/user/backup/$(date +"%Y-%m-%d") sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.zip /etc -x "*apache2*" -x "*php*" -x "*mysql*" sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_apache2.zip /etc/apache2 sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.zip /etc/php sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.zip /etc/mysql sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.zip /var/www -x "*html*" sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.zip /var/www/html sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" # Backup All End echo "Backup Completed Successfully!" echo "Location: /home/user/backup/$(date +"%Y-%m-%d")" chmod +x /home/user/bash/backupscript.sh sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript 

changez / home / user pour votre répertoire utilisateur et tapez: backupscript n’importe où sur le terminal pour exécuter le script! (en supposant que / usr / bin est sur votre chemin)