"pushd" 디렉터리 스택을 영구적으로 만듭니다.

"pushd" 디렉터리 스택을 영구적으로 만듭니다.

좋습니다. 간단한 질문입니다. 나는 pushd명령을 사용하여 목록에 더 많은 작업 디렉터리를 추가할 수 있다는 것을 우연히 알았습니다 . 이는 편리합니다. 하지만 재부팅이나 로그아웃 후에도 유지되도록 이 목록을 영구적으로 만들 수 있는 방법이 있습니까?

답변1

~/.bashrc원하는 경우 파일에 디렉터리 스택을 미리 채울 수 있습니다.

for dir in "$HOME/dir" /usr/src /usr/local/lib; do
    pushd -n "$dir" >/dev/null
end

또는 디렉토리를 배열에 넣고 거기에서 사용하려면 다음을 수행하십시오.

dirstack=( "$HOME/dir"
           /usr/src
           /usr/local/lib )

for dir in "${dirstack[@]}"; do
    pushd -n "$dir" >/dev/null
end

unset dirstack

를 사용하면 -n실제로 pushd작업 디렉터리가 변경되지 않고 지정된 디렉터리가 스택에 추가될 뿐입니다.

원하는 경우 배열의 값 DIRSTACK(여기서는 변수 이름을 대문자로 지정)을 저장할 수 있습니다.현재의디렉터리 스택을 파일에 넣은 다음 미리 정의된 배열을 사용하는 대신 ~/.bash_logout해당 파일을 읽습니다 .~/.bashrc

존재하다 ~/.bash_logout:

declare -p DIRSTACK >"$HOME/.dirstack"

존재하다 ~/.bashrc:

if [ -f "$HOME/.dirstack" ]; then
    source "$HOME/.dirstack"
fi

여러 터미널을 사용하는 경우 이것이 얼마나 잘 작동하는지 모르겠습니다. .dirstack터미널이 bash로그인 셸로 실행되는 경우 종료할 때마다 이 파일을 덮어씁니다.

관련 정보