2010-12-07 140 views
0

我想運行從一個bash腳本以下命令內部執行命令:從bash腳本

sudo cat << EOF>> /etc/profile 

export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64 
export JAVA_HOME=/opt/jdk1.6.0_22/ 
export PATH=${JAVA_HOME}/bin:/opt/tomcat/bin:${PATH} 

EOF 

sudo source /etc/profile 

但得到以下錯誤:

/home/ak/init-script.sh: line 40: /etc/profile: Permission denied 
sudo: source: command not found 

如何實現任何幫助什麼我想要?

安東尼

回答

2

當您嘗試寫入/ etc/profile時,您會收到「Permission denied」錯誤。這是因爲sudo僅適用於第一個命令 - cat,但寫入/ etc/profile的進程具有普通用戶的權限。

這就是爲什麼這個文件沒有被創建。有一個workaround,但我不認爲你需要它,因爲如果你只需要輸出一些變量,你可以直接從你的shell做到這一點:如果你需要加載從/ etc設置

export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64 
export JAVA_HOME=/opt/jdk1.6.0_22/ 
export PATH=${JAVA_HOME}/bin:/opt/tomcat/bin:${PATH} 

/profile到你的shell,你可以運行沒有sudo的source /etc/profile,那裏不需要它。

+0

太棒了!謝謝! – Antonis 2010-12-07 15:09:36

3

source是一個內置bash命令,不是你可以用sudo運行的程序。您必須在整個腳本上使用sudo