2010-12-07 151 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