web-dev-qa-db-fra.com

Comment rendre un script shell global?

Je suis sous Mac OS 10.6 et j'essaie d'apprendre quelque chose sur les scripts Shell. Je comprends comment enregistrer un script Shell et le rendre exécutable, mais je me demande ce que je peux faire ou où je peux enregistrer le fichier pour le rendre global (c’est-à-dire accessible quel que soit le dossier dans lequel je me trouve).

Par exemple, si j'enregistre un fichier .sh dans le répertoire/Users/username/et le rend exécutable, je ne peux exécuter ce script que dans ce répertoire spécifique. Si je navigue vers/Utilisateurs/nom d'utilisateur/Téléchargements, par exemple, je ne peux pas exécuter le script.

En outre, toute suggestion de ressources pour en savoir plus sur les scripts Shell serait utile. Merci

56
zebraman

/usr/local/bin serait l'emplacement le plus approprié. Mac OS X l'a dans la PATH par défaut

102
unbeli

Traditionnellement, ces scripts sont soit en ~/bin (c'est-à-dire: le répertoire bin de votre répertoire personnel), soit en /usr/local/bin/. Le premier signifie que le script ne fonctionnera que pour vous, le second est destiné aux scripts que vous voulez que n'importe qui sur le système puisse exécuter.

Si vous le mettez dans ~/bin, vous devrez peut-être l'ajouter à votre variable d'environnement PATH. /usr/local/bin devrait déjà être sur le chemin.

33
Bryan Oakley

Il y a deux façons de le faire -

  1. Mettez votre script dans usr/local/bin et assurez-vous qu'il est exécutable (chmod + x my_script) (cela est déjà défini dans le chemin, vous pouvez le vérifier en faisant un echo $ PATH)
  2. Créez un dossier dans votre répertoire personnel appelé bin. (Pour vos scripts personnels)
    • cd ~ (vous amène à votre répertoire personnel)
    • mkdir bin (créer un dossier bin)
    • vim .bash_profile (pour définir la variable d'environnement de chemin)
    • export PATH = ~/bin: $ PATH (Appuyez sur i puis ajoutez cette ligne, puis tapez sur ec et tapez: wq)
    • Maintenant, vous pouvez simplement taper le nom de votre script et l'exécuter à partir de n'importe où.
13
Piqué

Sous bash Shell, écrivez ce script en tant que fonction, puis placez-le dans le fichier .bashrc ou dans le fichier source contenant cette fonction sous "source nom_fichier"

Maintenant, exécutez le script par appel de fonction dans le shell.

2

Dans le système d'exploitation mac

  • Ouvrez le fichier ~/.bashrc de bash.
  • ajouter le chemin de votre script dans votre fichier bashrc, en utilisant export PATH = "$ PATH: /Users/sher.mohammad/Office/practice/practiceShell"
  • Ouvrez votre fichier ~./Bash_profile et ajoutez [[-s ~/.bashrc]] && source ~/.bashrc
  • ouvre une nouvelle fenêtre de terminal Maintenant, chaque fois que vous ouvrirez votre terminal, votre script sera chargé
2
Sher Mohammad

Celui-ci est super facile si vous connaissez votre fichier bashrc! Cela utilisera entièrement uniquement votre fichier .bashrc et prend 2 secondes à accomplir.

(J'utilise Arch Linux Manjaro, j'utilise donc .bashrc situé dans mon répertoire personnel)

Le code à placer dans votre fichier .bashrc:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

Comme vous pouvez le constater, vous utilisez d’abord la simple commande 'cd' et lui donnez le répertoire de l’emplacement des scripts, puis vous utilisez '&&' pour pouvoir exécuter la commande suivante juste après et enfin ouvrir votre script normalement! Super facile et enregistré directement dans votre fichier .bash! :)

J'espère que j'ai aidé quelqu'un!

Cordialement,

AnonymousX

2
AnonymousX

Soit en l’enregistrant dans /usr/bin (ou tout autre répertoire présent dans PATH) ou en éditant PATH pour inclure le répertoire dans lequel vous l’avez sauvegardé, il sera exécuté dans n’importe quel répertoire.

1
You

depuis le répertoire de travail de 'script.sh' "mv [script.sh]/usr/local/bin" (non testé mais semble être le moyen le moins complexe utilisé par l'OMI.)

0
d1gl3r