簡體   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