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?
P.S. (i) Je n’utilise pas beaucoup le script Shell et j’ai essayé de lire sur les alias, mais je n’ai pas compris comment les utiliser.
(ii) J'ai aussi lu comment lier le script à un autre fichier dans les variables PATH. J'utilise mon serveur universitaire et je ne dispose pas des autorisations nécessaires pour créer un fichier à ces emplacements.
Ajoutez un "Shebang" en haut de votre fichier:
#!/bin/bash
Et rendre votre fichier exécutable (chmod +x script.sh
).
Enfin, modifiez votre chemin pour ajouter le répertoire dans lequel se trouve votre script:
export PATH=$PATH:/appropriate/directory
(vous voulez généralement $HOME/bin
pour stocker vos propres scripts)
Voici certaines des conditions préalables à l’utilisation directe du nom de script:
she-bang (#!/bin/bash)
tout en haut.chmod u+x scriptname
rend le script exécutable. (où scriptname
est le nom de votre script)/usr/local/bin
.Note: La raison pour laquelle j'ai suggéré de le placer dans le dossier /usr/local/bin
est parce que ce sera probablement le chemin déjà ajouté à votre PATH variable
.
Si vous n'avez pas accès au dossier /usr/local/bin
, procédez comme suit:
myscripts
.ls -lart
sur votre répertoire personnel pour identifier le script de démarrage utilisé par votre shell. Il devrait s'agir de .profile
ou de .bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.Assurez-vous simplement qu'il est exécutable, en utilisant chmod +x
. Par défaut, le répertoire en cours ne se trouve pas sur votre CHEMIN. Vous devrez donc l'exécuter en tant que ./script.sh
- ou le référencer par un chemin qualifié. Alternativement, si vous avez vraiment besoin que de script.sh
, vous devez l’ajouter à votre CHEMIN. (Vous pouvez ne pas avoir accès à la modification du chemin système, mais vous pouvez certainement modifier le chemin PATH de votre propre environnement actuel.) Cela suppose également que votre script commence par quelque chose comme #!/bin/sh
.
Vous pouvez également utiliser un alias, qui n'est pas vraiment lié aux scripts Shell, mais uniquement au shell, et qui est simple comme suit:
alias script.sh='sh script.sh'
Ce qui vous permettrait d'utiliser simplement script.sh
(littéralement - cela ne fonctionnera pour aucun autre fichier *.sh
) à la place de sh script.sh
.
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
? En effet, lorsque nous le lancerons à partir du terminal, il ne faudra taper que myShell
pour pouvoir exécuter notre commande!
Maintenant, en nano, la ligne supérieure DOIT être #!/bin/bash
, alors vous pouvez laisser une nouvelle ligne avant de continuer.
Pour démonstration, je vais ajouter une réponse de base Hello World!
Donc, je tape ce qui suit:
echo Hello World!
Après cela, mon exemple devrait ressembler à ceci:
#!/bin/bash
echo Hello World!
Maintenant, enregistrez le fichier et ensuite exécutez cette commande:
Sudo chmod +x myShell
Maintenant que le fichier est exécutable, nous pouvons le déplacer vers /usr/bin/
à l'aide de la commande suivante:
Sudo cp myShell /usr/bin/
Juste pour nous assurer que la machine peut 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 il faut dire Hello World!
Vous devez activer le bit exécutable pour le programme.
chmod +x script.sh
Ensuite, vous pouvez utiliser ./script.sh
Vous pouvez ajouter le dossier à la variable PATH dans votre fichier .bashrc
(situé dans votre répertoire personnel). Ajoutez cette ligne à la fin du fichier:
export PATH=$PATH:/your/folder/here
Vous pouvez taper Sudo install (nom du script)/usr/local/bin/(ce que vous voulez taper pour exécuter ledit script)
ex: Sudo install quickcommit.sh /usr/local/bin/quickcommit
entrer le mot de passe
peut maintenant fonctionner sans .sh et dans n'importe quel répertoire
Ajouter . (répertoire courant) à votre variable PATH.
Vous pouvez le faire en modifiant votre fichier .profile.
insère la ligne suivante dans votre fichier .profilePATH=$PATH:.
Assurez-vous simplement d'ajouter Shebang (#!/bin/bash
) au début de votre script et de le rendre exécutable (à l'aide de chmod +x <File Name>
).
Juste:
/path/to/file/my_script.sh
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 dans 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)
Entrez "#!/bin/sh"
avant le script. Puis enregistrez-le sous script.sh
par exemple. copiez-le dans $HOME/bin
ou $HOME/usr/bin
Le répertoire peut être différent sur différentes distributions Linux, mais elles se terminent par 'bin'
et se trouvent dans le répertoire de base cd $HOME/bin
ou $HOME/usr/bin
Type chmod 700 script.sh
Et vous pouvez l’exécuter simplement en tapant run.sh
sur le terminal. Si cela ne fonctionne pas, essayez chmod +x run.sh
au lieu de chmod 700 run.sh