2016-07-29 27 views
0

我想這個新行添加到我的.bashrc:巴什 - 增加新的生產線包括變量

Path=$PATH:$JAVA_HOME/bin 

我用:

echo "PATH=\"$PATH:$JAVA_HOME/bin\"" >> ".bashrc" 

但它插入:

PATH="/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/bin:/usr/lib/java/jdk1.8.0_102/bin:/usr/lib/java/jdk1.8.0_102/bin:/usr/lib/java/jdk1.8.0_102/bin" 

任何人都可以幫助解決這個問題?

我知道我可以用文本編輯器如vim,但由於是腳本的一部分,我需要使用

echo "string" >> file 

變種

感謝和問候!

+1

您需要在$ PATH中轉義'$',所以'$ PATH'不會被擴展。事實上,這不是一個真正的錯誤。但在這種情況下,只需要追加另一個路徑就可以將'$ PATH'未擴展的情況更加正常。 –

+0

您插入的PATH以'/usr/lib/java/jdk1.8.0_102/bin:/usr/lib/java/jdk1.8.0_102/bin:/ usr/lib/java/jdk1.8.0_102/bin'結尾。我認爲你跑了你的劇本三次!在添加另一個文件夾之前,您應該檢查PATH。 –

+0

當您安裝新的jdk版本時會發生什麼?當您將新版本附加到PATH時,將首先找到jdk1.8.0_102中的可執行文件。你可以在全局資源中添加路徑,還是要檢查? –

回答

2

你需要逃避$兩個$PATH$JAVA_HOME

所以它應該是:

echo "PATH=\$PATH:\$JAVA_HOME/bin" >> ".bashrc" 
2

你不應該逃避的美元符號,而不是加引號和轉義那些? 和你的命令應該在它前面的出口,因此將結束是echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> .bashrc

2

爲了保持它比這裏其他的答案更漂亮,你可以使用單引號,因爲變量將不會被擴大:

echo 'PATH=$PATH:$JAVA_HOME/bin' >> .bashrc 

此外,您將要從以前的嘗試中刪除.bashrc中的所有部分,因爲直到您這樣做,PATH將會因您的示例中看到的重複和不正確的條目而變得非常混亂。