2012-10-30 72 views
2

我的.bash_profile文件 我想更新PATH變量的值。 另外,想要添加JAVA_PATHJRE_HOME變量。 而且,我想用Shell腳本來做所有這些。覆蓋linux中的.bash_profile文件

我不知道如何使用命令做到這一點的想法,所以我覆蓋使用命令 -

cat >> ~/.bash_profile << _EOF_ 
#!/bin/bash/ 
if [ -f ~/.bashrc ]; then 
.~/.bashrc 
fi 

#User specific environment and startup programs 
JAVA_PATH=/usr/java/jdk1.6.0_35/bin 
PATH=$JAVA_PATH:$PATH:HOME/bin 
JRE_HOME=/usr/jdk1.6.0_35 

export PATH 
unset USERNAME 
_EOF_ 

什麼是有這個文件,這樣做的影響,整個文件? 如何我可以很容易地更新值PATH變量和插入JAVA_PATHJRE_HOME變量在這個文件中?

+1

,你實際上是_appending_ ,而不是覆蓋。 – Arkku

+0

你想解決什麼問題? Java更新後的位置更新後的所有時間?爲什麼不使用文件系統中的符號鏈接指向當前版本?那麼你的.bash_profile可以保持不變。 –

回答

0

你需要使用一些文本處理工具 - 像sed或awk的...

下面是如何

sed 's/^\([[:space:]]*PATH=\)\(.*\)$/\1"\/bin:\/usr\/bin:~\/bin"/' ~/.bash_profile 

注意改變你的.bash_profile PATH值簡單的例子轉義特殊字符(和/

它要覆蓋舊的文件,需要通過像臨時文件來做到這一點:

sed ... > /tmp/tmpbashprofile$$ 
mv /tmp/tmpbashprofile$$ ~/.bash_profile 

添加新的設置很簡單:

echo "JAVA_PATH=/usr/java/jdk1.6.0_35/bin" >> ~/.bash_profile 

注意雙>> - 它,因爲你使用``>>重定向,而不是'>`將數據追加到指定的文件

+0

echo「JAVA_PATH =/usr/java/jdk1.6.0_35/bin」>>〜/ .bash_profile 將追加到最後一行。 但是我們如何在導出之前添加PATH未設置USERNAME –

+0

使用命令如sed's/^ \(export PATH \)$/JAVA_PATH = \/usr \/java \ /jdk1.6.0_35 \/bin \ n \ 1 /'〜/ .bash_profile ...在我的回答中以相同的方式使用... –