둘 다 현재 디렉터리 경로인 동일한 정보를 pwd
제공합니다 .~+
그래서 내 질문은 다른 것 대신에 하나를 사용해야 하는가입니다. ~+
제 생각에는 모든 시스템이 지원되나요 pwd
? 그렇다면 ~+
사용하기가 더 눈길을 끌 것입니다.
사용 예는 다음과 같습니다.
var=$($(pwd)/folder/another/script -v)
var=$(~+/folder/another/script -v)
답변1
~+
표준어는 아닌 것 같은데,only ~username
및 물결표는 별도로 정의됩니다.. 예를 들어 Dash 및 Busybox는 이를 지원하지 않습니다 ~+
. 그러나 명령 pwd
및 셸 변수는 $PWD
표준이므로 "$(pwd)"
또는 "$PWD"
작동해야 합니다.
대부분의 경우 를 사용하여 현재 디렉터리를 참조할 수 있지만 .
전체 경로를 확장해야 하는 경우 일반적으로 "$PWD"
변수 대신 명령 대체를 사용합니다. 이를 위해서는 많은 셸에서 새 프로세스를 생성해야 하므로 불필요한 오버헤드가 발생합니다.
현재 디렉터리 경로에 공백 등이 포함되어 있는 경우 확장자를 인용해야 합니다. (또는 $IFS
무엇이든 포함하고 전역 문자도 포함됩니다.)
그러나 현재 작업 디렉터리의 심볼릭 링크 를 확인하려면 "$(pwd -P)"
. 이것이 주어진 것인지 확인하는 것은 아닙니다). 예를 들어:$PWD
$(pwd)
$ mkdir /tmp/foo
$ ln -s /tmp/foo /tmp/link
$ cd /tmp/link
$ echo "$PWD"; pwd; pwd -P
/tmp/link
/tmp/link
/tmp/foo