bash나 bourne shell에서 cd를 사용할때
글쓴이: somedayhow / 작성시간: 목, 2013/04/11 - 8:51오후
알면 엄청 간단할것 같은 문제이지만,, 도무지 풀리지가 않는 문제입니다.
#! bin/sh or #! bin/bash currentpath= $PWD cd $currentpath
위와 같이 cd를 사용하면 아무런 에러가 나지 않고 잘 동작합니다.
하지만
#! bin/sh or #! bin/bash currentpath= $PWD cd ..$currentpath
./command_prac_bourne.sh: line 8: cd: ..$variable: No such file or directory
이렇게 에러가 나버리겠다고 예상했고 그렇게 에러가 났습니다.
현재 경로가
A/B/C/D/E
라고 했을때
A/B/C/D
로 cd를 이용해 이동하려면 어떻게 해야할까요?
cd A/B/C/D
를 사용하지 않고 $PWD를 이용해서 말입니다.
또 한가지 질문은 shell script 상에서
abc.o라는 실행파일을 실행시킬때,
그 파일의 경로인
E/F/G/H를
shell script를 실행하기 전에 아래와 같은 코드를 써서
abcpath=E/F/G/H
abcpath로 지정하고
$abcpath/abc.o
로 실행을 하면 실행이 안됩니다.
절대경로/abc.o
로 하면 잘되는데 말입니다.
무엇이 문제일까요?
Forums:
"현재 경로"에서 상위로 가려면 그냥 ..만 쓰시면
"현재 경로"에서 상위로 가려면 그냥 ..만 쓰시면 되죠.
두번째 질문은... 안 될 이유가 없는데요. 그런데 지금 눈에 띄는 게 abcpath 가 상대경로로 지정되어 있는데, 그렇다면 저 스크립트는 반드시 E 디렉토리의 상위 디렉토리에서 실행해야만 제대로 동작할 겁니다. (스크립트 자체는 어디에 있어도 상관없는데, 실행하는 시점의 작업디렉토리가 E의 상위 디렉토리여야)
좋은 하루 되세요!
../$currentpath 라고 쓴것이..
잘못이었네요 순서가 잘못되었었군요..ㅋㅋ
두번째 질문은 밑에 답변달아주신분의 말처럼
앞에 맨처음에 / 를 적지 않았기 때문이었군요!
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
첫번째 질문에서$PWD를 이용해서 경로지정을
첫번째 질문에서
$PWD를 이용해서 경로지정을 할때
a/b/c/d 로 하지마시고
/a/b/c/d 이렇게 해보세요
앞에서의 절대경로가 지정되지않아 경로를 제대로못잡아서 그러는것입니다.
저같은경우에도 스크립트하나에서 다른스크립트와 연동되어 쓸때 꼭 앞에 /경로를 지정해줍니다
아 그랬군요
앞에 /가 없어서 동작을 안했었군요 ㅋㅋㅋ
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
#! bin/shcurrentpath=$PWDcd
이렇게 하셔야 겠죠. ..${currentpath} 는 존재하지 않는 경로이니까요. (재수 좋으면 존재할 수도 있겠군요 ^^)
순서가 문제였습니다..
그게 문제였네요 고맙습니다 ㅋㅋ
----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를
댓글 달기