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 sur les alias, mais je n'ai pas compris comment les utiliser.
(ii) J'ai également lu comment lier le script à un autre fichier dans les variables PATH. J'utilise mon serveur universitaire et je n'ai pas l'autorisation de créer un fichier à ces emplacements.
$HOME/bin
- si vous n'en avez pas déjà un, ajoutez-le à votre PATH (près du devant). Placez les scripts (et tout autre programme) que vous souhaitez exécuter directement sans spécifier le chemin d'accès ici, ou des liens symboliques ici vers où se trouvent les programmes réels.mv example.sh example
et ensuiteexample
fonctionner de manière autonome.Réponses:
Ajoutez un "shebang" en haut de votre fichier:
Et rendez votre fichier exécutable (
chmod +x script.sh
).Enfin, modifiez votre chemin pour ajouter le répertoire où se trouve votre script:
(généralement, vous souhaitez
$HOME/bin
stocker vos propres scripts)la source
source script.sh
a bien fonctionné, ou plutôtsource <filename_without_any_extension_type>
source ./my-cool-script
(ou. ./my-cool-script
) polluera la session shell actuelle avec toutes les variables définies dans le script. Le sourcing ne doit pas être utilisé sauf si vous souhaitez modifier explicitement la session shell en définissant des variables d'environnement, en changeant le répertoire, etc../
, vous pouvez avoir une collision de noms. Essayez de renommer.Voici quelques-unes des conditions préalables à l'utilisation directe du nom du script:
she-bang (#!/bin/bash)
ligne tout en haut.chmod u+x scriptname
rendre le script exécutable. (oùscriptname
est le nom de votre script)/usr/local/bin
dossier.Remarque: La raison pour laquelle j'ai suggéré de le placer dans le
/usr/local/bin
dossier est probablement parce que ce chemin sera déjà ajouté à votrePATH variable
.Mettre à jour:
Si vous n'avez pas accès au
/usr/local/bin
dossier, procédez comme suit:myscripts
.ls -lart
sur votre répertoire personnel pour identifier le script de démarrage que votre shell utilise. Ce devrait être.profile
soit.bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.la source
. .bashrc
. Autrement dit, mettez simplement.
suivi despace
votre nom de script de démarrage.Assurez-vous simplement qu'il est exécutable, en utilisant
chmod +x
. Par défaut, le répertoire actuel n'est pas sur votre PATH, vous devrez donc l'exécuter en tant que./script.sh
- ou le référencer autrement par un chemin qualifié. Alternativement, si vous en avez vraiment besoinscript.sh
, vous devrez l'ajouter à votre CHEMIN. (Vous n'avez peut-être pas accès pour modifier le chemin d'accès système, mais vous pouvez presque certainement modifier le CHEMIN 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é au script shell mais uniquement au shell, et qui est simple:
Ce qui vous permettrait d'utiliser simplement
script.sh
(littéralement - cela ne fonctionnera pas pour tout autre*.sh
fichier) au lieu desh script.sh
.la source
alias
commande à l'invite du shell, puis l'alias sera disponible pour exécuter la commande avec.Dans cet exemple, le fichier sera appelé
myShell
Tout d'abord, nous devrons créer ce fichier, nous pouvons simplement commencer en tapant ce qui suit:
Remarquez que nous n'avons pas mis l'
.sh
extension? En effet, lorsque nous l'exécutons à partir du terminal, nous n'aurons besoin que de tapermyShell
pour exécuter notre commande!Maintenant, dans nano, la ligne supérieure DOIT être
#!/bin/bash
alors vous pouvez laisser une nouvelle ligne avant de continuer.Pour la démonstration j'ajouterai une
Hello World!
réponse basiqueDonc, je tape ce qui suit:
Après cela, mon exemple devrait ressembler à ceci:
Maintenant, enregistrez le fichier, puis exécutez cette commande:
Nous avons maintenant rendu le fichier exécutable vers lequel nous pouvons le déplacer
/usr/bin/
en utilisant la commande suivante:Juste pour nous 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 il faut direHello World!
la source
/usr/bin
- de nombreux systèmes tave/usr/local/bin
à cet effet et réserver/usr/bin
strictement pour le système d'exploitation.sudo chmod
votre propre fichier.Vous devez activer le bit exécutable pour le programme.
Ensuite, vous pouvez utiliser
./script.sh
Vous pouvez ajouter le dossier au CHEMIN dans votre
.bashrc
fichier (situé dans votre répertoire personnel). Ajoutez cette ligne à la fin du fichier:la source
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
entrez le mot de passepeut maintenant fonctionner sans .sh et dans n'importe quel répertoire
la source
Ajouter . (répertoire actuel) à votre variable PATH.
Vous pouvez le faire en modifiant votre fichier .profile.
mettez la ligne suivante dans votre fichier
PATH=$PATH:.
.profile Assurez-vous simplement d'ajouter la ligne Shebang (
#!/bin/bash
) au début de votre script et de rendre le script exécutable (en utilisantchmod +x <File Name>
).la source
Voici mon script de sauvegarde qui vous donnera l'idée et l'automatisation:
Serveur: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql etc ...
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 se trouve sur votre chemin)
la source
Entrez
"#!/bin/sh"
avant le script. Enregistrez-le ensuite commescript.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 ils se terminent par
'bin'
et se trouvent dans le répertoire personnelcd $HOME/bin
ou$HOME/usr/bin
Type
chmod 700 script.sh
Et vous pouvez l'exécuter en tapant simplement
run.sh
sur le terminal. Si cela ne fonctionne pas, essayezchmod +x run.sh
au lieu dechmod 700 run.sh
la source
Rendre n'importe quel fichier exécutable
Disons que vous avez un fichier exécutable appelé migrate_linux_amd64 et que vous souhaitez exécuter ce fichier en tant que commande comme "migrer"
Assurez-vous que vous disposez des privilèges d'exécution sur le fichier
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
sinon, exécutez
chmod +x migrate.linux-amd64
Copiez ensuite votre fichier dans
/usr/local/bin
. Ce répertoire appartient à root, utilisez sudo ou passez à root et effectuez l'opération suivantela source
Juste:
la source