내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
다운로드
trending_flat
OS환경 : Oracle Linux 6.8 (64bit)
DB 환경 : Oracle Database 11.2.0.4
에러 : /bin/sh^M: bad interpreter: No such file or directory
쉘파일 실행 시 아래 메세지 발생
1 2 | $ ./archiving_audit.sh -bash: ./archiving_audit.sh: /bin/sh^M: bad interpreter: No such file or directory |
해결 방법 : vi 의 바이너리 모드로 들어간 뒤 윈도우 개행문자(엔터) 삭제
vi 일반모드로 실행
1 2 3 4 5 6 7 8 9 10 11 12 | $ vi archiving_audit.sh #!/bin/sh ORACLE_SID=ORCL11 AUDIT_TAR_FILE=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").tar.gz AUDIT_TAR_LOG=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").log AUDIT_DEST=/oracle/app/oracle/admin/ORCL11/adump AUDIT_TAR_DEST=/oracle/app/oracle/admin/ORCL11/audit_backup if [ -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG" ] then rm -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG" fi |
스크립트상에 아무 문제가 없어보임
방법1.
vi 일반모드로 실행 후 :set fileformat=unix 명령 실행 후 저장
1 2 | $ vi archiving_audit.sh :set fileformat=unix |
스크립트 재실행
1 2 | $ ./archiving_audit.sh ***script complete*** |
정상적으로 스크립트가 실행됨
방법2.
cat 으로 읽은 뒤 | tr -d '\r' 명령으로 한줄씩 잘라서 새로운 파일에 저장
1 | $ cat archiving_audit.sh | tr -d '\r' > archiving_audit.sh.new |
스크립트 재실행
1 2 | $ ./archiving_audit.sh ***script complete*** |
정상적으로 스크립트가 실행됨
방법3.
vi 바이너리 모드로 실행(vi -b)
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ vi -b archiving_audit.sh #!/bin/sh^M ORACLE_SID=ORCL11^M AUDIT_TAR_FILE=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").tar.gz^M AUDIT_TAR_LOG=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").log^M AUDIT_DEST=/oracle/app/oracle/admin/ORCL11/adump^M AUDIT_TAR_DEST=/oracle/app/oracle/admin/ORCL11/audit_backup^M ^M if [ -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG" ]^M then^M rm -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG"^M fi^M ^M |
^M이 줄마지막마다 다 달려있는 모습을 볼 수 있음
줄마지막마다 달려있는 ^M 삭제 후 저장
1 2 3 4 5 6 7 8 9 10 11 12 | $ vi -b archiving_audit.sh #!/bin/sh ORACLE_SID=ORCL11 AUDIT_TAR_FILE=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").tar.gz AUDIT_TAR_LOG=${ORACLE_SID}_AUDIT_$(date +"%Y%m%d%H%M%S").log AUDIT_DEST=/oracle/app/oracle/admin/ORCL11/adump AUDIT_TAR_DEST=/oracle/app/oracle/admin/ORCL11/audit_backup if [ -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG" ] then rm -f "$AUDIT_TAR_DEST/$AUDIT_TAR_LOG" fi |
스크립트 재실행
1 2 | $ ./archiving_audit.sh ***script complete*** |
정상적으로 스크립트가 실행됨
원인 : 윈도우와 linux 간 줄바꿈을 의미하는 개행문자가 달라서 발생하는 문제
윈도우와 linux 간 줄바꿈을 의미하는 개행문자가 달라서 발생하는 문제
윈도우에서 스크립트 파일을 만든 뒤, linux 에서 실행해서 발생한 오류
참조 :
https://stackoverflow.com/questions/2920416/configure-bin-shm-bad-interpreter