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.