IT박스

환경 변수를 설정하는 쉘 스크립트

itboxs 2020. 11. 19. 07:59
반응형

환경 변수를 설정하는 쉘 스크립트


변수를 내보내는 쉘 스크립트를 작성하고 싶습니다.

아래에 스크립트를 나열했습니다.

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"

그러나 이것은 제대로 작동하지 않는 것 같습니다. 대신 쉘 프롬프트에서 개별적으로 명령을 실행해야합니다.


스크립트의 더 많은 부분을 보여 주시고 개별적으로 실행해야하는 명령과 간단하게 원하는 명령을 알려주십시오.

한편 변수를 확장하려면 작은 따옴표가 아닌 큰 따옴표를 사용해야합니다.

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는 셸 스크립트를 사용하여 대화 형 셸에서 내보내기 변수를 만드는 방법에 대한 단계를 명시 적으로 요청하지 않았습니다. 그는 자신의 대본을 최대한 평가하도록 요청했습니다. 그는 그의 대본이 어떻게 사용될 것인지에 대한 세부 사항을 언급하지 않았습니다. 대화식 쉘 을 사용 .하거나 사용할 수 있습니다 source. 독립형 scipt 일 수도 있고 source다른 스크립트에서 가져온 것일 수도 있습니다 . 환경 변수는 대화 형 셸에만 국한되지 않습니다. 이 대답은 그의 문제를 해결했습니다.


source또는 약어 로 스크립트를 실행해야합니다..

source ./myscript.sh

또는

. ./myscript.sh

이는 기존 셸 내에서 실행되어 스크립트가 생성하거나 수정 한 모든 변수를 스크립트가 완료된 후 사용할 수 있도록합니다.

파일 이름 만 사용하여 스크립트를 실행하면 별도의 하위 쉘에서 스크립트가 실행됩니다.


나는 그것을 해결할 수 없다 source ./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

참고 URL : https://stackoverflow.com/questions/18547881/shell-script-to-set-environment-variables

반응형