Come eseguire script in directory diverse?


51

Ci ho provato

./home/user/scripts/someScript

ma non funziona

Nessun file o directory con questo nome

qualche idea?


2
Ovviamente non esiste un file o una directory del genere. Quindi dai la strada sbagliata. Il punto lì non significa "esegui". Fa solo parte del percorso. Nella shell normalmente digitate i file da eseguire o i comandi (che in realtà sono anche file) :)
Pithikos

sbarazzarsi di quel periodo iniziale e riprovare. In alternativa, funzionerà anche ~ / scripts / someScript. tieni anche a mente `` qoutes e i programmi exec ($ man exec)
j0h

Risposte:


61

Il punto iniziale nel comando significa "relativo alla directory corrente". Rimuovilo e farà riferimento a "il file someScriptnella directory /home/user/scripts:

/home/user/scripts/someScript

Se ricevi "Autorizzazione negata", è perché non hai autorizzazioni sufficienti per accedere al file nella directory di altri utenti o perché il file non è eseguibile. Per renderlo eseguibile, esegui:

chmod +x /home/user/scripts/someScript

35

Se lo script deve accedere alle risorse nella stessa cartella da cui viene eseguito e lo hai specificato come percorsi relativi, lo script si interromperà.

Aggiungo sempre cd $(dirname $0)a alla testa del mio script in modo che la cartella contenente lo script sia la cartella principale.


6

Rimuovi il .

Se rendi eseguibile chmod 755 <nameofscript>lo script per eseguirlo, devi solo digitare il percorso dello script.

Quando vedi che ./scriptviene usato, dice alla shell che lo script si trova nella stessa directory in cui lo stai eseguendo. Per utilizzare il percorso completo digitato sh /home/user/scripts/someScript.


sh /path/to/fileè diverso da /path/to/file. shviene eseguito il /bin/shcollegamento simbolico a /bin/dash.
Lekensteyn,

Basta chiarire qualcosa sugli esempi che vedi in rete, normalmente vedi sh ./somescriptche possono anche essere digitati come `sh / path / to / script / scriptitself '.
Bruno Pereira,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.