[unix] pwd가 –physical과 같은 긴 옵션을 허용하지 않는 이유는 무엇입니까?

pwd명령에 대한 매뉴얼을 표시하면 긴 옵션 --physical이 지원 된다고 말합니다.

$ man pwd
PWD(1)                           User Commands                          PWD(1)

NAME
       pwd - print name of current/working directory

SYNOPSIS
       pwd [OPTION]...

DESCRIPTION
       Print the full filename of the current working directory.

       -L, --logical
              use PWD from environment, even if it contains symlinks

       -P, --physical
              avoid all symlinks

그러나 다음을 입력하면 실패합니다.

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]

왜 긴 옵션이 작동하지 않습니까?

RHEL 6.4를 사용하고 있습니다. pwd에 대한 별명이 구성되지 않았습니다. 표준 암호처럼 보입니다.

$ which pwd
/bin/pwd



답변

bash쉘에 pwd간단히 입력 할 때 사용하는 명령 이 내장 pwd되어 있습니다.

pwd맨 페이지에 설명 된대로 를 얻으려면 외부 명령을 사용해야합니다. 당신은 (실행 파일의 전체 경로를 지정하여이 작업을 수행 할 수 있습니다 /bin/pwd귀하의 경우) 또는 앞에 붙이는 env줄 앞에 : env pwd의 시작 env명령을하는 환경에 설정을 추가 할 수 있습니다 (그러나 이는 여기 수행되지 않음) 한 후 env시작 지정된 명령 으로는 env내장 명령이 없습니다 pwd, “진짜”가 /bin/pwd실행됩니다.

내장 pwdbash 의 장점은 bash현재 디렉토리를 추적하므로 값을 얻는 데 비용이 들지 않지만 외부 명령은 파일 시스템을 통해 경로를 결정하기 위해 IO를 많이 사용하는 경로를 결정해야한다는 것입니다.


답변

해당 맨 페이지 문서 /bin/pwd는 있지만 실행 pwd하면 셸 내장을 사용합니다. 의 출력을 참조하십시오

type pwd

쉘의 내장 pwd은 긴 옵션을 지원하지 않습니다 (쉘 문서를 참조하십시오. Bash를 사용 help pwd하기 때문에 요약을 제공합니다).


답변