web-dev-qa-db-fra.com

Comment exécuter ce script avec Sudo à partir de la ligne de commande?

J'ai le script suivant dans le répertoire bin de mon utilisateur; supposons que le nom de fichier est 'myScript':

#!/bin/bash

python3 /myPath/myProgram.py "$@"

À partir de la ligne de commande, si je tape myScript, il lance mon myProgram.py. Si je tape Sudo myScript, mais cela me donne cette erreur: Sudo: myProgram: command not found.

Pourquoi ça ne marche pas? Comment puis-je le faire fonctionner?

Merci!

1
Shule

Vous devrez probablement exécuter le script comme:

  • Sudo /path/to/myScript
  • Sudo ./myScript (si le script est dans le répertoire courant)

La raison pour laquelle vous obtenez command not found si le script ne se trouve pas dans le répertoire PATH de l'utilisateur actuel. Cependant, l'utilisation de Sudo l'exécute en tant qu'utilisateur root différent (comparez echo $PATH et Sudo -i puis echo $PATH à voir). Donc, vous voulez l'ajouter au CHEMIN de l'utilisateur root:

  • Copiez-le dans /usr/local/bin, /usr/bin/ ou un autre direcotry déjà dans le PATH de la racine
  • Ajoutez le répertoire au PATH , mais faites-le en tant que root (avec précaution).
4
Wilf