bash나 bourne shell에서 cd를 사용할때

somedayhow의 이미지

알면 엄청 간단할것 같은 문제이지만,, 도무지 풀리지가 않는 문제입니다.

#! 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

로 하면 잘되는데 말입니다.

무엇이 문제일까요?

raymundo의 이미지

"현재 경로"에서 상위로 가려면 그냥 ..만 쓰시면 되죠.

cd ..
# 특정 경로에서 상위로 가려면
cd $currentpath/..

두번째 질문은... 안 될 이유가 없는데요. 그런데 지금 눈에 띄는 게 abcpath 가 상대경로로 지정되어 있는데, 그렇다면 저 스크립트는 반드시 E 디렉토리의 상위 디렉토리에서 실행해야만 제대로 동작할 겁니다. (스크립트 자체는 어디에 있어도 상관없는데, 실행하는 시점의 작업디렉토리가 E의 상위 디렉토리여야)

좋은 하루 되세요!

somedayhow의 이미지

잘못이었네요 순서가 잘못되었었군요..ㅋㅋ
두번째 질문은 밑에 답변달아주신분의 말처럼
앞에 맨처음에 / 를 적지 않았기 때문이었군요!

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

ngh1262의 이미지

첫번째 질문에서

$PWD를 이용해서 경로지정을 할때

a/b/c/d 로 하지마시고

/a/b/c/d 이렇게 해보세요

앞에서의 절대경로가 지정되지않아 경로를 제대로못잡아서 그러는것입니다.

저같은경우에도 스크립트하나에서 다른스크립트와 연동되어 쓸때 꼭 앞에 /경로를 지정해줍니다

somedayhow의 이미지

앞에 /가 없어서 동작을 안했었군요 ㅋㅋㅋ

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

김정균의 이미지

#! bin/sh
currentpath=$PWD
cd ${currentpath}/..

이렇게 하셔야 겠죠. ..${currentpath} 는 존재하지 않는 경로이니까요. (재수 좋으면 존재할 수도 있겠군요 ^^)

somedayhow의 이미지

그게 문제였네요 고맙습니다 ㅋㅋ

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.