현재 작업 디렉토리를 얻는 방법은 무엇입니까? [복사]

현재 작업 디렉토리를 얻는 방법은 무엇입니까? [복사]

현재 작업 디렉터리를 변수에 전달하는 스크립트를 원합니다. 디렉토리가 필요한 부분은 이렇습니다 dir = pwd. pwd현재 작업 디렉토리를 변수에 넣는 방법 만 인쇄합니다 .

답변1

그럴 필요는 없어 이미 이렇게 됐어존재하다변수:

$ echo "$PWD"
/home/terdon

변수 PWDPOSIX에 의해 정의됨모든 POSIX 호환 쉘에서 작동합니다.

장애인

쉘 및 CD 유틸리티로 설정됩니다. 셸에서는 아래와 같이 환경에서 값을 초기화해야 합니다. PWD 값이 실행 시 환경의 셸로 전달되는 경우 값은 현재 작업 디렉터리의 절대 경로 이름이고 {PATH_MAX}바이트(종료 null 바이트 포함)를 초과하지 않으며 값에 다음이 포함되지 않습니다. 점 또는 점-점 구성 요소인 경우 셸은 PWD를 환경의 값으로 설정해야 합니다. 그렇지 않고 실행 시간 환경이 현재 작업 디렉터리의 절대 경로 이름인 PWD 값을 셸에 전달하고 해당 값에 점 또는 점-점 구성 요소가 포함되어 있지 않으면 셸이 PWD를 다음으로 설정한다고 지정하지 않습니다. 환경의 값은 여전히 ​​PWD를 pwd -P에 의해 출력된 경로 이름으로 설정합니다. 그렇지 않으면 sh 유틸리티는 PWD를 pwd -P에 의해 출력된 경로 이름으로 설정합니다. PWD가 환경의 값으로 설정된 경우 해당 값에는 기호 링크 유형 파일을 참조하는 구성 요소가 포함될 수 있습니다. PWD가 pwd -P에 의해 경로 이름 출력으로 설정된 경우 현재 작업 디렉터리 또는 해당 디렉터리의 상위 디렉터리에 경로 이름을 결정할 수 있는 충분한 권한이 없으면 PWD 값이 지정되지 않습니다. 이 변수에 대한 할당은 무시될 수 있습니다. 응용 프로그램이 PWD 값을 설정하거나 설정 해제하는 경우 cd 및 pwd 유틸리티의 동작은 지정되지 않습니다.


보다 일반적인 답변을 위해 명령의 출력을 변수에 저장하는 방법은 명령을 $()또는 ` `(백틱)로 묶는 것입니다.

var=$(command)

또는

var=`command`

두 가지 중에서 다음 $()과 같은 복잡한 명령을 작성하는 것이 더 쉽기 때문에 선호됩니다.

command0 "$(command1 "$(command2 "$(command3)")")"

해당 백틱은 다음과 같습니다.

command0 "`command1 \"\`command2 \\\"\\\`command3\\\`\\\"\`\"`"

답변2

dir=$(pwd)

이는 백틱 방법보다 이식성이 뛰어나고 선호됩니다.

를 사용하면 $()명령을 중첩할 수 있습니다.

예를 들어:mech_pwd=$(pwd; echo in $(hostname))

답변3

환경 변수를 사용 $PWD하거나 다음과 같이 작성할 수 있습니다.

dir=`pwd`

답변4

현재 작업 디렉터리의 값은 다를 수 있습니다. 현재 디렉토리를 얻기 위해 심볼릭 링크를 사용하면 pwd는 /usr/bin/pwd와 다른 결과를 제공합니다. bash를 사용하고 있으므로 다음을 사용합니다.

dir=$(/usr/bin/pwd)

또는 의견에 따라:

dir=$(pwd -P)

백틱은 중첩될 수 없기 때문에 싫어하기 때문입니다.

관련 정보