繁体   English   中英

从bash脚本中执行命令

[英]Execute commands from inside a bash script

我想从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

关于如何实现我想要的任何帮助?

安东尼

source是内置的bash命令,而不是可以使用sudo运行的程序。 您必须在整个脚本上使用sudo

尝试写入/ etc / profile时,出现“权限被拒绝”错误。 这是因为sudo仅应用于第一个命令-cat,但是写入/ etc / profile的进程具有普通用户的特权。

这就是为什么未创建此文件的原因。 有一个解决方法 ,但我认为您不需要它,因为如果您只需要导出一些变量,则可以直接从您的shell中进行操作:

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}

如果您需要将设置从/ etc / profile加载到您的shell中,则可以只运行source /etc/profile而不使用sudo,那里不需要它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM