請向我們展示腳本的更多部分,並告訴我們您必須單獨執行哪些命令並且想要簡單。
同時,你必須使用雙引號不是單引號來擴展變量:在一個命令結束
export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH"
分號也是不必要的。
到目前爲止:
su -c 'sh /path/to/script.sh'
(對於那些誰downvote這個答案,你應該知道,OP沒有明確要求一個shell:
#!/bin/sh
echo "Perform Operation in su mode"
export ARCH=arm
echo "Export ARCH=arm Executed"
export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH"
echo "Export path done"
export CROSS_COMPILE='/home/linux/Practise/linux-devkit/bin/arm-arago-linux-gnueabi-' ## What's next to -?
echo "Export CROSS_COMPILE done"
# continue your compilation commands here
...
對於su
你可以運行它腳本將在-interactive-shell上導出變量 - 而不是在一次運行shell腳本中使用source
或.
來調用它的腳本將毫無意義,除非您實際上是從ano調用腳本其他腳本。當然如果真的有必要的話,你可以使用source
或.
,但是還有另外一個問題需要解決,在這種情況下的實際問題似乎是使用單引號。
不要因爲它沒有幫助你而降低它的效率。答案是針對所提出的問題和OP。
如果OP -actually mentioned-它的確是通過shell腳本的建立導出的環境變量交互式shell這本來使用。)
您正在使用哪個Shell(如bash,ksh,sh) – Tom
[Save Global variables BASH]可能重複(http://stackoverflow.com/questions/10779771/save-global-variables-bash) – tripleee
[將變量從環境中導出到環境中bash腳本沒有采購它](http://stackoverflow.com/questions/16618071/export-a-variable-to-the-environment-from-a-bash-script-without-sourcing-it) –