$ PWD 란 무엇입니까? (vs 현재 작업 디렉토리)


27

따라서 Wikipedia ( link )는 명령 pwd이 "print working directory"의 줄임말이며 적절 하다는 것을 알려줍니다 .

그러나 환경 변수의 경우 "P"는 인쇄 이외의 다른 약어 여야합니다.

사람들이 "현재 작업 디렉토리"에 대해 이야기하는 것을 들었습니다. 더 잘 들리고 더 직관적이지만 환경 변수는 $ CWD가 아니라 $ PWD라고합니다. 아무도 "인쇄 작업 디렉토리 변수를 확인 했습니까?"라고 말한 적이 없습니다.

나는 현재 웹 응용 프로그램 서버 uWSGI를 가지고 놀고 있으며 그것을 실행할 때 (uWSGI 통계 페이지에서) 알려줍니다.

"cwd":"/home/velle/greendrinks",

그래서 그들은 분명히 (보다 직관적 인 약어) cwd를 좋아합니다 pwd.

내가 뭔가를 잘못 이해했는지 또는 환경 변수에 직관적이지 않은 이름을 부여한 것의 문제인지 알아 내려고 노력하고 있습니까?


5
현재 작업 디렉토리?
DarioP

3
네가 너무 생각하고있는 것 같아 $PWD와 동등하고 `pwd`, 그것은 충분히 정당화되었습니다.
다른 사람이

1
또 다른 추측 : 프로세스 작업 디렉토리?
oxfn

답변:


23

그것은 당신이하는 일에 달려 있습니다. 우선 $PWD, 환경 변수이며 pwd쉘 내장 또는 실제 바이너리입니다.

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

이제 bash 내장은 플래그 $PWD를 사용하지 않는 한 현재 값을 인쇄합니다 -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 시스템에 대한 결론 (우분투 등)에 pwd그리고 echo $PWD당신이 사용하지 않는 동일 -P옵션을하지만 /bin/pwd같은 다른과 동작합니다입니다 pwd -P.

출처 https://askubuntu.com/a/476633/291937


1
@llua PWD환경 변수가 될 수있는 것은 없습니다 . 실제로는 모든 쉘이 아닌 대부분의 경우 기본 프로세스이며 자식 프로세스에 제공하는 것이 좋습니다.
jlliagre

1
사람들이 왜 다운 피트 (downvoted)했는지 궁금합니다. 좋은 답변 인 것 같습니다.
Mads Skjern

2
@MadsSkjern POSIX 표준에서는 대부분의 내장 기능이 명령으로도 제공되어야합니다. 이것은 쉘을 시작할 필요없이 다른 프로그램에서 직접 호출 할 수 있도록하기위한 것입니다.
jlliagre

2
이것은 실제로 나에게 질문에 대답하지 않습니다. 의문은 실제로 ( $PWDpwd내가 믿기 전에 U & L에서 이미 다룬)의 차이점에 관한 것이 아니라 변수 " PWD" 의 원인이 된 이유에 관한 것 입니다.
John WH Smith

1
@Thushi 당신은 정확할 것입니다. PWD는 ksh88다음과 같은 문서 로 소개되었습니다 PWD The present working directory set by the cd command.. 답장에 추가해야합니다.
jlliagre 2014

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.