디렉토리를 기억하고 항상 루트 디렉토리 대신 해당 디렉토리로 CD를 이동하는 스크립트

디렉토리를 기억하고 항상 루트 디렉토리 대신 해당 디렉토리로 CD를 이동하는 스크립트

CD를 사용할 때 항상 해당 디렉토리로 변경되도록 기억하면서 주어진 디렉토리로 변경하는 스크립트를 작성하는 방법은 무엇입니까?

#!/bin/bash
setdir() {
    cd $1
    # remember the directory we are changing to here so whenever we do cd we go back to this set dir
}

setdir "$1"

답변1

다음과 같이 작동해야 합니다.

setdir() {
    cd "$1"
    export SETDIR_DEFAULT="$1"
}

my_cd() {
    cd "${1-${SETDIR_DEFAULT-$HOME}}"
}

이는 별도의 스크립트가 아니라 함수라는 점에 유의하세요. 이를 호출하는 상위 셸에 영향을 미칠 방법이 없기 때문에 별도의 스크립트에서는 이 작업을 수행할 수 없습니다.

만약 너라면진짜덮어쓰려면 cd(이렇게 하지 마세요) cd로 바꾸세요 builtin cd.

답변2

대답하기에는 조금 늦을 수도 있지만 CDPATH사용 가능한 아이디어가 마음에 드실 수도 있습니다. 이를 통해 cd이 변수의 디렉터리 내용을 어디에서나 참조할 수 있습니다. 예는 다음과 같습니다.

$ mkdir -p test/{1,2,3}
$ cd test/
$ mkdir 1/{a,b,c}
$ export CDPATH=/tmp/test/1
$ ls
1  2  3
$ cd a
$ pwd
/tmp/test/1/a
$ cd ~
$ cd b
$ pwd
/tmp/test/1/b

자세한 내용은 다음을 참조하세요 man.

   CDPATH    A <colon>-separated list of pathnames 
             that refer to directories. The cd utility 
             shall use this list in its attempt to  change  
             the directory,  as described in the DESCRIPTION. 
             An empty string in place of a directory 
             pathname represents the current directory. If
             CDPATH is not set, it shall be treated as if 
             it were an empty string.

관련 정보