셸 스크립트 분석 - oe-init-build-env
#!/usr/sh
if [ -z "$ZSH_NAME" ] && [ "x$0" = "x./oe-init-build-env" ]; then
echo "Error: This script needs to be sourced. Please run as '. ./oe-init-build-env'"
else
if [ -n "$BASH_SOURCE" ]; then
OEROOT="`dirname $BASH_SOURCE`"
else
OEROOT="`pwd`"
fi
OEROOT=`readlink -f "$OEROOT"`
export OEROOT
. $OEROOT/scripts/oe-buildenv-internal && \
$OEROOT/scripts/oe-setup-builddir && \
[ -n "$BUILDDIR" ] && cd $BUILDDIR
unset OEROOT
unset BBPATH
fi
첫 번째, 이 스크립트가source 또는.의 방법으로 실행되었습니다.하지만
[ "x$0" = "x./oe-init-build-env" ]
맞습니다./oe-init-build-env 이런 실행 방식이 틀렸습니다. 맞습니다./yocto/oe-init-build-env는 틀리지 않습니다.두 번째 단계에서 OEROOT 변수를 설정합니다.쓸모가 있다.또는 소스가 스크립트를 실행할 때 BASH_SOURCE 이 변수는 소스 파일 경로에 자동으로 설정됩니다.그래서 dirname $BASH_SOURCE는 스크립트가 있는 디렉토리를 가져옵니다.readlink -f $OEROOT는 절대 경로를 얻었습니다.
세 번째 단계는 oe-buildenv-internal과 oe-setup-builddir 두 스크립트를 실행하고build 디렉터리에 들어갑니다.
(여기 oe-buildenv-internal은 사용합니다. 실행된 것이고, oe-setup-build는 fork shell입니다. oe-setup-builddir에서 OEROOT라는 변수를 사용했기 때문에 그 전에 OEROOT는 스크립트에서 한 것처럼 export되어야 합니다.)
네 번째 단계, unset 변수.왜냐하면또는source의 실행 방식은 원 셸에서 실행되며 fork 셸이 아니기 때문에 unset이 없으면 이 셸에 계속 남아 있습니다.
chenqi@chenqi-laptop ~/MyPro/ShellScript/yocto $ . ./oe-init-build-env BASH_SOURCE = ./oe-init-build-env, OEROOT = . OEROOT =/home/chenqi/MyPro/ShellScript/yocto
chenqi@chenqi-laptop ~/MyPro/ShellScript $ source yocto/oe-init-build-env BASH_SOURCE = yocto/oe-init-build-env, OEROOT = yocto OEROOT =/home/chenqi/MyPro/ShellScript/yocto
어느 디렉터리에서 실행하든지 간에 마지막으로 얻은 OEROOT의 절대 경로는 일치한다는 것을 알 수 있다.BASH_SOURCE, dirname, readlink를 주로 사용합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.