Comment exécuter le script dans un répertoire différent?

51

J'ai essayé ça

./home/user/scripts/someScript

mais ça ne marche pas

Aucun fichier ou répertoire de ce nom

des idées?

UAdapter
la source
2
De toute évidence, il n’existe pas un tel fichier ou répertoire. Donc, vous donnez le mauvais chemin. Le point ne signifie pas "exécuter". C'est juste une partie du chemin. En shell, vous tapez normalement soit des fichiers à exécuter, soit des commandes (qui sont en fait des fichiers) :)
Pithikos
se débarrasser de cette période de départ et essayez à nouveau. Alternativement, ~ / scripts / someScript fonctionnera également. gardez aussi à l'esprit `` qoutes, et les programmes exec ($ man exec)
juin

Réponses:

61

Le point initial de votre commande signifie "relatif au répertoire en cours". Supprimez-le et il fera référence au "fichier someScriptdans le répertoire /home/user/scripts:

/home/user/scripts/someScript

Si vous obtenez "Autorisation refusée", c'est soit parce que vous ne disposez pas des autorisations suffisantes pour accéder au fichier situé dans le répertoire des autres utilisateurs, soit parce que le fichier n'est pas exécutable. Pour le rendre exécutable, lancez:

chmod +x /home/user/scripts/someScript
Lekensteyn
la source
35

Si votre script doit accéder aux ressources du même dossier que celui où il est exécuté et que vous le spécifiez sous forme de chemins d'accès relatifs, votre script sera interrompu.

J'ajoute toujours a cd $(dirname $0)à la tête de mon script pour que le dossier contenant le script soit le dossier racine.

Naisanza
la source
6

Retirer le .

Si vous rendez le script exécutable avec chmod 755 <nameofscript>pour l'exécuter, il vous suffit de taper le chemin d'accès au script.

Lorsque vous l' ./scriptutilisez, il indique au shell que le script se trouve dans le même répertoire que vous l'exécutez. Pour utiliser le chemin complet que vous tapez sh /home/user/scripts/someScript.

Bruno Pereira
la source
sh /path/to/fileest différent de /path/to/file. shexécute un /bin/shlien symbolique vers /bin/dash.
Lekensteyn
Juste pour clarifier quelque chose sur les exemples que vous voyez sur le net, normalement vous voyez sh ./somescriptce qui peut aussi être tapé `sh / path / to / script / scriptitself '.
Bruno Pereira