왜 밀어낼 수 없나요?

왜 밀어낼 수 없나요?

나는 bash 스크립트를 작성할 때 오랫동안 pushdand 를 사용해 왔습니다. popd하지만 오늘 실행하면 which pushd어떤 결과도 나오지 않습니다. 나는 이것을 이해할 수 없습니다. 나는 항상 그것이 wait pushd와 같은 단순한 명령이라고 생각했습니다 .cdls

그렇다면 왜 which pushd나에게는 아무것도 주어지지 않았습니까?

답변1

popd이는 pushdBash에 내장된 명령이며 실제 바이너리로 HDD에 존재하는 실제 실행 파일이 아닙니다.

Bash 매뉴얼 페이지에서 발췌
   DIRSTACK
          An array variable (see Arrays below) containing the current 
          contents of the directory stack.  Directories appear in the stack 
          in the order they are displayed by the dirs builtin.  Assigning to 
          members of  this  array variable may be used to modify directories 
          already in the stack, but the pushd and popd builtins must be used 
          to add and remove directories.  Assignment to this variable will 
          not change the current directory.  If DIRSTACK is unset, it loses 
          its special properties, even if it is subsequently reset.

모든 내장 명령의 전체 목록은 Bash 매뉴얼 페이지와 여기에서 찾을 수 있습니다.http://struct.usc.edu/bash/bashref_4.html.

compgen -b또는 를 사용하여 enable이러한 모든 내장 함수의 전체 목록을 얻을 수도 있습니다.

캠프겐
$ compgen -b | grep -E "^push|^pop"
popd
pushd
~할 수 있게 하다
$ enable -a | grep -E "\bpop|\bpus"
enable popd
enable pushd

또한 내장 명령에 대한 도움이 필요한 경우 다음을 사용할 수 있습니다 help.

$ help popd | head -5
popd: popd [-n] [+N | -N]
    Remove directories from stack.

    Removes entries from the directory stack.  With no arguments, removes
    the top directory from the stack, and changes to the new top directory.

$ help pushd | head -5
pushd: pushd [-n] [+N | -N | dir]
    Add directories to stack.

    Adds a directory to the top of the directory stack, or rotates
    the stack, making the new top of the stack the current working

관련 정보