shell script 관련..질문입니다.

irdeal의 이미지

현재 사용자는 root이고요
스크립트 개념도 부족하고 해서 연습을 하고 있는데요. wiki보면서요..

간단하게 패스 export해주는 것을 해보았는데 적용이 안되네요 왜 그럴까요? :(

export SDK=/home/irdeal/workarea/firmware
export IRRE=/home/irdeal/refference
export IRWO=/home/irdeal/workarea

이렇게 파일을 만들고요 실행권한주고 실행을 한다음에 printenv
로 확인을 해보면 환경설정에 포함이 안되있더군요 왜 그런가요?

$? 출력하면 세군데 다 0값으로 나와서 제대로 수행하는거 같은데..

좋은 하루 되세용 :) [/code]

pynoos의 이미지

실행권한을 주고 실행하면 새로운 쉘이 뜨게 되고 그 쉘에서만 적용된다음 스크립트가 종료되면 같이 사라집니다.

. 명령을 사용하세요....

또는 source 명령으로 하셔도됩니다.

익명 사용자의 이미지

shell script 내에서 정의한 환경변수들은 shell script가 실행될 동안만 유효합니다.
현재 사용중인 shell에서 shell script를 실행하면 새로운 shell이 생성되어서 실행되고 종료되기 때문입니다.

쉘 스크립트를 실행하는 방법은 다음과 같은 방법이 있습니다.

# source myscript.sh
# . myscript.sh

# bash myscript.sh
# chmod 755 myscript.sh;./myscript.sh

위의 2가지 실행스타일과 밑의 두가지 스타일은 각기 동작이 틀립니다.

위의 2가지 스타일의 경우 새로운 쉘이 생성되지 않고 실행됩니다.
따라서 스크립트내에서 정의한 환경변수들이 유지가 될 수 있습니다.
하지만 밑의 두가지 스타일의 경우 새로운 쉘이 생성되어서 스크립트가 실행되므로 스크립트내에서 정의한 환경변수들이 스크립트가 종료된 다음에 유지되지 않습니다.

또 하나 말하자면 위의 두가지 스타일은 새로운 쉘에서 실행되지 않고 현재 쉘에서 실행되므로 스크립트내에서 "exit 0"과 같은 코드를 사용하게 되면 현재 쉘이 닫혀버리게 됩니다.

irdeal의 이미지

명쾌한 답변에 감사드립니다. :D

제가 쉘스크립트에 대한 기본 개념이 부족했었네요.

또 하나 배워갑니다.

May The Force Be With You
irdeal