2010-12-15 156 views
1

J'ai une question relativement simple que je ne comprends pas et je ne peux pas trouver la bonne requête de recherche pour trouver l'information dont j'ai besoin sur google alors je pensais demander au collectif.comment appeler correctement la commande unix à partir d'autres dirs

En bref:

cd /var/www/config 
./deploy.sh - works! 

mais

./var/www/config/deploy.sh 

ne marche pas :(

deploy.sh appelle un autre script bash et il semble que le script appelé ne peux pas trouver les libs dont il a besoin parce que il recherche par rapport à l'endroit où il a été appelé, ce qui serait dans ce cas/à la place de/var/www comme il l'attendait

Je suis en train d'appeler cela à partir d'un script capistrano donc besoin de trouver un moyen de l'appeler sans avoir à d'abord cd. Est-ce que quelqu'un sait un moyen simple d'y parvenir?

EDIT: Merci pour vos suggestions rapides, c'est toujours en train de jouer. deploy.sh appelle un autre fichier bash appelé sake. J'ai envoyé une copie ici http://tinypaste.com/25fc8

Cheers guys!

+1

un regard sur le chemin absolu et chemin relatif http://en.wikipedia.org/wiki/Path_(computing) – cristian

Répondre

0

Vous pouvez également envelopper trop pour que vous puissiez revenir dir existante, parfois proggies aiment ramasser le PWD dans lequel travailler pourrait donc être utile de fixer explicitement:

(cd /var/www/config/ && ./deploy.sh)

1

Ne placez pas . (période) devant votre commande. Il suffit d'utiliser:

$ /var/www/config/deploy.sh 
+0

Hey c'est logique, merci pour votre aide rapide! Je reçois toujours l'erreur "Impossible de trouver ./sapphire/cli-script.php ou ./cli-script.php" - Le script bash que j'appelle essaie toujours de rechercher les bibliothèques dont il a besoin en utilisant l'adressage relatif. – Nick

0

Si vous voulez rester où vous êtes après la commande se fait:

(cd /var/www/config; ./deploy.sh)