Je rencontre un problème étrange avec mon Ubuntu 64 bits - sur la commande d'exportation.
En gros, j'ai une installation VM sur Ubuntu sur mon Win7 et j'essaie de passer des commandes de mes fenêtres à mon installation VM à l'aide d'un logiciel personnalisé (fourni par le client).
Donc, sur ma machine virtuelle, quand je le fais:
export foo=bar
echo $foo
tout fonctionne comme prévu.
Cependant, lorsque je fais de même avec le logiciel personnalisé (qui transmet la commande linux en tant que chaîne au bash Shell), je reçois:
export: command not found
J'ai essayé de regarder le shell (en utilisant le logiciel personnalisé), en utilisant:
echo $Shell>Shell.txt
et j'obtiens/bin/bash ce qui est attendu et j'obtiens toujours l'erreur export: command not found.
Je me demandais si quelqu'un avait déjà vu cette erreur?
export
est une commande intégrée à Bash, echo
est un exécutable dans votre $PATH
. Donc export
est interprété par Bash tel quel, sans générer de nouveau processus.
Vous devez faire appel à Bash pour interpréter votre commande, que vous pouvez transmettre sous forme de chaîne avec l'option -c
:
bash -c "export foo=bar; echo \$foo"
ÉGALEMENT:
Chaque appel de bash -c
commence par un nouvel environnement. Donc, quelque chose comme:
bash -c "export foo=bar"
bash -c "echo \$foo"
ne fonctionnera pas. La deuxième invocation ne se souvient pas de foo
.
Au lieu de cela, vous devez chaîner les commandes séparées par ;
en un seul appel de bash -c
:
bash -c "export foo=bar; echo \$foo"
Si vous utilisez C Shell -
setenv PATH $PATH":/home/tmp"
si vous ne pouvez pas utiliser "export" cmd
then Just use:
setenv path /dir
comme ça
setenv Oracle_HOME /data/u01/apps/Oracle/11.2.0.3.0
Êtes-vous certain que le logiciel (et non vous-même, car votre test n'affiche que le shell utilisé par défaut pour votre utilisateur) utilise/bin/bash?
Probablement parce qu'il essaie d'exécuter "export" en tant que commande externe et qu'il s'agit d'un shell interne.
changer de script bash à sh, faire mon script fonctionne.
Shell
est une variable d'environnement et n'est donc pas la plus fiable pour ce que vous essayez de comprendre. Si votre outil utilise un shell qui ne le définit pas, il conservera son ancienne valeur.
Utilisez ps
pour comprendre ce qui se passe réellement.