Pushd 디렉터리 스택은 어떻게 저장되나요?

Pushd 디렉터리 스택은 어떻게 저장되나요?

관련 질문에는누군가가 말했다쉘이 종료되면 명령의 디렉토리 스택이 pushd지워집니다. 하지만어떻게스택이 실제로 저장되어 있습니까? 나는 사용한다물고기Bash 대신 명령이 동일한 방식으로 작동합니다. 나는 pushd(및 popd)이 사용 중인 쉘과 독립적으로 작동한다고 가정합니다 . 아니면 두 쉘 모두 자체 구현이 있습니까?

답변1

디렉터리 스택은 어디에도 영구적으로 저장되지 않습니다. 쉘은 이를 프로세스 메모리의 배열에 저장합니다 DIRSTACK(사용자 수정 제한). 엄밀히 말하면 스택도 아닙니다. bash와 ksh를 사용하면 지정된 개수만큼 왼쪽과 오른쪽으로 회전할 수도 있습니다.

Bash에서 이 dirs명령은 스택을 다양하게 지우거나 표시하고, popd지정된 디렉터리를 제거하고, pushd디렉터리를 추가하거나, 스택을 회전하여 이미 저장된 디렉터리로 변경합니다.

Pushd 스택 자체는 "삭제"되지 않습니다. Pushd는 외부 명령이 아닌 내장 쉘입니다(외부 명령은 쉘 자체의 환경을 변경할 수 없습니다). 각 셸은 자체 푸시 데이터를 유지하며 셸 프로세스가 종료되면 콘텐츠가 삭제됩니다.

관련 정보