2012-08-22 3 views
0

OS: UNIX Solaries, Oracle Application Server 10gComment exécuter la commande Unix d'Oracle Forms

Pour exécuter le script shell de Oracle Forms, je le host('/bin/bash /u01/compile.sh') suivant et il fonctionne bien

Maintenant, je dois exécuter la commande unix quelque chose comme

host('mv form1.fmx FORM1.FMX') mais il ne fonctionne pas

J'ai essayé d'ajouter la commande mv form1.fmx FORM1.FMX' au script shell compile.sh mais aussi il ne fonctionne pas bien que le reste lin es du script shell fonctionne bien

Répondre

0

La solution est d'ajouter tout le chemin complet de la commande mv et cela a bien fonctionné, comme suivre

/bin/mv /u01/oracle/runtime/test/form1.fmx /u01/oracle/runtime/test/FORM1.FMX

0

Au cas où quelqu'un rencontre d'autre le même problème, la cause est que le processus Forms crée un sous-processus pour exécuter la commande host(), et que ce sous-processus hérite des variables d'environnement du processus parent, qui sont dérivées de default.env (ou d'un autre fichier env tel que défini dans la configuration du serveur). Une variable PATH est définie dans ce fichier, mais elle ne contient pas les codes habituels /bin ou /usr/bin. Les commandes ne s'exécutent donc pas sauf si le chemin d'accès complet est spécifié.

La solution consiste à définir la variable PATH correcte soit dans le script exécuté (via export PATH=$PATH:...) soit au default.env. Je l'ai mis dans le script, puisque, connaissant Oracle, il n'y a aucune garantie que modifier default.env ne cassera pas quelque chose.