[질문] [리눅스-bash] 스크립트 문제 좀 도와주세요..
글쓴이: horangs / 작성시간: 금, 2011/06/03 - 11:08오전
bash 언어로 작성한 파일(스크립트)이 2개 있습니다.
a.sh 와 b.sh 라 할 때,
a.sh는 b.sh를 호출하는 구조입니다.
그런데 사용할 때 일반 스크립트와는 다소 다르게
. a.sh 와 같은 "dot(.) 스크립트명" 꼴로 사용합니다.
그리고 a.sh에도 b.sh를 호출할 때 . b.sh 와 같이 호출합니다.
a.sh와 b.sh의 첫 라인은 #!/bin/bash
와 같이 bash라는 것을 알리고 있습니다만..
최근 문제가 생겼습니다.
유저 중에 기본 shell이 ksh인 사람이 이 스크립트를 사용하니,
bash의 배열을 인식 못하는 겁니다...
b.sh에는 array=( var1 var2 )
와 같이 ksh에서 지원되지 않는, bash 배열이 선언되어 있는데
이걸 해석 못하더라구요...
결국 스크립트 첫 라인에 쓴 bash 라는 것을 알리는 라인이 소용이 없다는 것을 알게 되었습니다.
이와 같이 bash로 작성된 스크립트를 ksh 유저가 사용할 때
첫 라인에 bash임을 선언해도 ksh로 해석되는 문제가 있으면..
어떻게 하면 좋은가요?? 이는 ".(dot) 스크립트명" 과 같이 사용해서 그런데..
이렇게 사용하지 않을 수는 없습니다.
Forums:
. a.sh ( = source a.sh )는
. a.sh ( = source a.sh )
는 별도의 sub shell을 만들지 않고, 현재 shell에서
주어진 스크립트를 실행하는 명령어이므로,
원하시는 내용은 불가능할 것 같습니다.
bash를 먼저 실행하고 그 다음에 하는 방법밖에는요.
b.sh 실행 전 실행쉘을 임시로 바꿔주는 방법은 안될려나요?
a.sh
#!/bin/bash
....
ORG_SHELL=${SHELL}
SHELL=/bin/bash
. b.sh
SHELL=${ORG_SHELL}
....
기본 shell 변경 말고는...
정말 답이 없다는 것을 테스트로 알게되었습니다.
댓글 달기