$ 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
이것은 실제로 나에게 질문에 대답하지 않습니다. 의문은 실제로 ( $PWD와 pwd내가 믿기 전에 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.