2010-09-04 8 views
1

Salut, je veux que mon script bash trouve où PHP est installé - il sera utilisé sur différents serveurs linux, et certains d'entre eux ne pourront pas utiliser la commande which. Quoi qu'il en soit je besoin d'aide avec cette deuxième ligne:Script BASH - Comment obtenir bash pour vérifier l'emplacement d'un fichier?

#!/bin/bash 
if (php is located in /usr/bin/php); then 
    PHP = /usr/bin/php 
else 
    PHP = /usr/local/zend/bin/php 
fi 
$PHP script.php 

Répondre

1

Essayez ceci:

if [ -e /usr/bin/php ]; then 
+0

ok qui a fonctionné, merci! – beatbreaker

+0

Cool, content que ça a aidé! :) –

0

whereis php localise

+0

La commande whereis ne fonctionne pas pour/usr/local/zend/bin/php ... pas sûr pourquoi, mais c'est peut-être parce qu'il a été installé à partir d'un tar.gz qui a juste exécuté un programme brut d'installation bash – beatbreaker

+0

whereis, si je me souviens bien, ne recherchera dans votre variable PATH actuelle que l'exécutable que vous cherchez. La plupart des chemins standard incluent/usr/bin/bin et si vous êtes root:/usr/sbin et/sbin. Puisque dans ce cas vous avez php dans un répertoire spécial où vous ne le trouverez probablement pas à moins d'avoir une variable PATH modifiée. Vous pouvez vérifier en tapant echo $ PATH – MadcapLaugher

0

Pour petit morceau de code que vous pouvez utiliser: && et ||

[ -x /usr/bin/php ] && PHP=/usr/bin/php || PHP=/usr/local/zend/bin/php 

BTW -x return true si le fichier est exécutable -e return true si le fichier existe

4

Utilisez ceci:

`which php` 

Mais voici ce je ferait:

#!/bin/env php 
<?php 

require 'script.php'; 
+0

Ma méthode est beaucoup plus élégante que la réponse acceptée. –

+1

Vous avez dit d'utiliser 'quel php' malgré le message original disant que certains ne pourraient pas avoir accès à' which. En outre, vous pourriez avoir mal lu la question. Il essaie d'exécuter un script PHP via la ligne de commande, mais pour ce faire, il a besoin du chemin vers l'exécutable PHP. Comment un PHP 'require' l'aiderait-il s'il ne pouvait pas l'exécuter? –

+0

Bonjour Derek. Puisque vous m'avez downvoted pour inclure "qui", vous devriez voir que j'ai fourni les deux réponses. Presque chaque distribution UNIX a/bin/env, et en utilisant cela, l'emplacement de PHP dans le chemin ressemblera beaucoup à celui de 'which', mais ne l'exigera pas. De plus, 'require' est là pour lui montrer comment inclure le fichier dans son exemple. –

1

Bash a une type commande.

type -p php 

vous donnera l'emplacement de l'exécutable en fonction de votre $PATH.

Vous avez des espaces autour de vos signes égaux que Bash ne permet pas. C'est ce que votre commande devrait ressembler à:

PHP=$(type -p php) 

ou vous pouvez même exécuter directement:

$(type -p php) script.php