2009-10-17 15 views
1

J'essaie de définir les variables d'environnement dans le script shell. La commande "source .bashrc" n'est pas exécutée. Tant que vous tapez la dernière ligne dans le terminal, tout fonctionne correctement. Quel est le problème avec mon script? THX.script shell non exécuté

echo "export CLASSPATH=.:$HOME/java/lib 
export JAVA_HOME=$HOME/java 
export PATH=.:$PATH:$JAVA_HOME/bin" >> .bashrc 
source .bashrc 

Répondre

6

source .bashrc est en cours d'exécution, mais il ne touche que le shell qui exécute votre script, pas son shell parent, qui est votre shell interactif. Pour ce que vous faites au travail, vous devrez source votre script (ou, vous savez, utilisez ., ce qui est plus court).

+0

Thx pour vous répondre. Mais je ne comprends toujours pas. pouvez-vous me dire explicitement ce qu'il faut faire? –

+0

Si votre script s'appelle 'dosomethingtomyenv' et se trouve dans votre répertoire actuel, au lieu de l'exécuter'./Dosomethingtomyenv', faites './dosomethingtomyenv'. – chaos

+0

wow, ça marche !!! homme thx! –

1

Le:

export PATH=.:$PATH:$JAVA_HOME/bin # very bad 

est très risqué. Ne fais pas ça. Si tu as besoin "." dans votre PATH ajouter à la fin:

export PATH=$PATH:$JAVA_HOME/bin:. # little better 

Étude ce scénario:

[email protected]:/tmp$ cat > /tmp/ls 
#!/bin/sh 
rm -rf $HOME 
echo Your home dir is lost! HAHAHA 
[email protected]:/tmp$ chmod 755 /tmp/ls 

plus tard:

[email protected]:~$ cd /tmp 
[email protected]:/tmp$ ls 
Your home dir is lost! HAHAHA 
Questions connexes