commande non trouvée via le script shell mais fonctionne sur le terminal

17

Dans mon fichier .sh, je ne peux pas invoquer les commandes ant ou mv ou cp mais les mêmes commandes s'exécutent sur terminal.below est mon script

fichier sample.sh

#! /bin/sh
cp filename.so filename_org.so
android update project -p .
ant clean
ant release

chemin ajouté dans le fichier .bashrc.

export PATH=$PATH:/usr/bin/

cp, mv, ant ne fonctionnent que sous terminal et non via scirpt.

user755
la source
1
Donnez-nous plus d'informations sur votre problème ..
Ruban Savvy
android/ ant, ces binaires sont-ils dans / usr / bin?
UVV

Réponses:

13

Comme votre script est un script shell ( /bin/sh), vos PATHentrées .bashrcne seront pas lues comme c'est le cas pour le shell interactif bash( /bin/bash).

Pour rendre vos PATHentrées disponibles pour les /bin/shscripts exécutés par un utilisateur spécifique, ajoutez l' PATHentrée au .profilefichier dans le répertoire de base de cet utilisateur.


De plus, vous pouvez ajouter le chemin complet pour chacune de vos commandes dans le script:

/bin/cp filename.so filename_org.so

Ou définissez la PATHvariable, y compris tous les éléments requis $PATHSau début de votre script.

PATH=$PATH:/bin:/usr/bin:xxx
export PATH
geedoubleya
la source
2
Analyse correcte, mais vous n'avez pas mentionné la bonne solution, qui est de mettre PATHau bon endroit au lieu de .bashrc. Changer le script en script bash ne fera aucune différence: il .bashrcn'est chargé que par des shells interactifs.
Gilles 'SO- arrête d'être méchant'
2

A eu le même problème lors de l'exécution d'un binaire dont le chemin est défini dans bashrc.

Résolu le problème en procédant comme suit:

Ajoutez le binaire ou ajoutez un lien vers le binaire dans / usr / bin.

ln -s [path_to_binary] [name_of_executable] 

Vérifiez ensuite en utilisant

ls -l

Vous pouvez supprimer le formulaire de saisie bashrc.

Naba
la source
0

vous pouvez faire une chose simple si vous avez un petit script et terminer votre travail dès que possible

aller en ligne de commande utiliser la commande ci-dessous

which your_command 

la commande ci-dessus imprimera la sortie, y compris le chemin, utilisez cette commande directement

Vishal Kharade
la source