그래서 위키피디아(협회pwd
) 명령이 "작업 디렉토리 인쇄"의 약자 라는 것을 알려주는데 , 이는 의미가 있습니다.
하지만 환경 변수의 경우 "P"는 print가 아닌 다른 의미의 약어여야 합니다.
사람들이 "현재 작업 디렉터리"에 대해 이야기하는 것을 듣습니다. 이 방법이 더 듣기 좋고 직관적이지만 환경 변수는 여전히 $CWD가 아니라 $PWD라고 불리는 것 같습니다. "인쇄 작업 디렉토리 변수를 확인하셨나요?"라고 말한 사람은 없습니다.
저는 현재 웹 애플리케이션 서버인 uWSGI를 사용하고 있으며, 이를 실행하면 (uWSGI 통계 페이지에서) 다음과 같은 메시지가 표시됩니다.
"cwd":"/home/velle/greendrinks",
cwd
그래서 그들은 분명히 (더 직관적인 약어)를 선호합니다 pwd
.
제가 뭔가 잘못 이해하고 있는 것인지 알아내려고 노력하고 있는 것 같습니다. 아니면 환경 변수에 직관적이지 않은 이름을 부여하는 문제일까요?
답변1
그것은 당신이 무엇을하고 있는지에 따라 달라집니다. 첫째, 쉘 내장 또는 실제 바이너리인 $PWD
환경 변수가 있습니다 .pwd
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$PWD
이제 이 플래그를 사용하지 않으면 bash 내장 기능은 단순히 현재 값을 인쇄합니다 -P
. 설명된 대로 help pwd
:
pwd: pwd [-LP]
현재 작업 디렉터리의 이름을 인쇄합니다.
옵션:
-L
$PWD
현재 작업 디렉터리가 지정되면 값을 인쇄합니다.-P
심볼릭 링크 없이 실제 디렉터리를 인쇄합니다.
기본적으로 "pwd"는 "-L"이 지정된 것처럼 동작합니다.
pwd
반면에 바이너리는 통과합니다.getcwd(3)
시스템 호출은 다음 readlink -f /proc/self/cwd
과 같은 값을 반환합니다. 이를 설명하기 위해 다른 디렉토리에 연결된 디렉토리로 이동해 보십시오.
$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun 4 11:22 foo
lrwxrwxrwx 1 terdon terdon 4 Jun 4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo
요약하자면, GNU 시스템(예: Ubuntu)에서는 옵션을 사용하지 않는 한 동일 pwd
하지만 다르며 .echo $PWD
-P
/bin/pwd
pwd -P
답변2
$PWD
~이다인현재 이름와트옥인디목차.
심볼릭 링크가 있는 경우 $PWD
읽기 결과는 명령 실행과 다를 수 있습니다 pwd
.