2009-10-17 4 views
1

Я пытаюсь установить переменные среды в сценарии оболочки. Команда «source .bashrc» не выполняется. Пока введите последнюю строку в терминале, все работает нормально. Что случилось с моим скриптом? спасибо.сценарий оболочки не выполнен

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

ответ

6

source .bashrc выполняется, но это влияет только на оболочку, которая работает скрипт, а не его родитель оболочка, которая является интерактивной оболочкой. Для того, что вы делаете, чтобы работать, вам нужно будет source ваш скрипт (или, знаете, используйте ., что короче).

+0

Thx для вас ответ. Но я все еще не понимаю. можете ли вы прямо сказать мне, что делать? –

+0

Если ваш скрипт называется 'dosomethingtomyenv' и находится в вашем текущем каталоге, вместо того, чтобы запускать его как'./Dosomethingtomyenv', do '. ./Dosomethingtomyenv'. – chaos

+0

ничего себе, это работает !!! THX человек! –

1

The:

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

Это очень рискованно. Не делай этого. Если тебе надо "." в вашем PATH добавить его в конце:

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

Исследование этого сценария:

[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 

позже:

[email protected]:~$ cd /tmp 
[email protected]:/tmp$ ls 
Your home dir is lost! HAHAHA 
Смежные вопросы