web-dev-qa-db-fra.com

commande d'exportation bash

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?

15
JohnJ

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"
27
ArjunShankar

Si vous utilisez C Shell -

setenv PATH $PATH":/home/tmp"
5
karuna

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
0
anand kakaraddi

Ê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?

0
Vincent L.

Probablement parce qu'il essaie d'exécuter "export" en tant que commande externe et qu'il s'agit d'un shell interne. 

0
theglauber

changer de script bash à sh, faire mon script fonctionne.

!/bin/sh

0
lwpro2

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.

0
bukzor