[英]Shell script to set environment variables
我希望編寫一個 shell 腳本來導出變量。
下面我列出了腳本。
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-';
echo "Export CROSS_COMPILE done"
但這似乎不能正常工作。 我必須在 shell 提示符下單獨執行命令。
您需要將腳本作為source
或速記來運行.
source ./myscript.sh
要么
. ./myscript.sh
這將在現有 shell 中運行,確保腳本創建或修改的任何變量在腳本完成后都可用。
僅使用文件名運行腳本將在單獨的子 shell 中執行腳本。
請向我們展示腳本的更多部分,並告訴我們您必須單獨執行哪些命令以及想要簡單地執行哪些命令。
同時,您必須使用雙引號而不是單引號來擴展變量:
export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH"
單個命令末尾的分號也是不必要的。
迄今為止:
#!/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
您可以使用以下命令運行它:
su -c 'sh /path/to/script.sh'
注意:OP 沒有明確詢問如何使用 shell 腳本在交互式 shell 中創建導出變量的步驟。 他最多只要求評估他的劇本。 他沒有提到如何使用他的腳本的細節。 它可能是通過使用.
或來自交互式 shell 的source
。 它可能是一個獨立的素文字,或者它可能已被source
“d從另一個腳本。 環境變量並非特定於交互式 shell。 這個答案解決了他的問題。
將腳本作為 source= 運行以在調試模式下運行。
source= ./myscript.sh
我無法用source ./myscript.sh
解決它。 它說找不到源錯誤。
使用時也失敗. ./myscript.sh
. ./myscript.sh
。 它導致無法打開 myscript.sh。
所以我的選擇是把它放在一個文本文件中,以便在下一個腳本中調用。
#!/bin/sh
echo "Perform Operation in su mode"
echo "ARCH=arm" >> environment.txt
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 -?" >> environment.txt
echo "Export CROSS_COMPILE done"
# continue your compilation commands here
...
Tnen 在需要時調用它:
while read -r line; do
line=$(sed -e 's/[[:space:]]*$//' <<<${line})
var=`echo $line | cut -d '=' -f1`; test=$(echo $var)
if [ -z "$(test)" ];then eval export "$line";fi
done <environment.txt
就我而言,我在=
之前和之后給了額外的空格。 例如,在我的 shell 文件中(比如deploy.sh
)
我最初寫
GIT_SHA = $(git rev-parse HEAD)
但我使用以下方法修復了它:
GIT_SHA=$(git rev-parse HEAD)
所以請注意,我們不應該在=
前后留任何空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.