우리는 이 cd
명령이 디렉토리를 변경하는 데 사용된다는 것을 알고 있습니다. 예를 들어
cd dirname
유효한 디렉토리 이름에는 및 도 포함 .
됩니다 ..
. 목적 cd ..
은 분명합니다. 맨페이지에서:
CDPATH의 빈 디렉터리는 현재 디렉터리와 동일한 이름(".")을 갖습니다.
그러나 이것의 목적은 무엇입니까 cd .
?
답변1
그것이 하는 일은 cd .
현재 작업 디렉토리에 대한 정보로 쉘을 업데이트하는 것입니다. 현재 디렉터리(경로명)가 cd
.
$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ cd dir
$ pwd
/tmp/shell-bash.OoVntBAM/dir
따라서 현재 우리는 아래 어딘가에 있는 /tmp
디렉토리에 있습니다 dir
. 현재 있는 디렉터리의 이름을 바꾸겠습니다.
$ mv ../dir ../new-dir
그럼 우리는 지금 어디에 있나요?
$ pwd
/tmp/shell-bash.OoVntBAM/dir
정말? 왜, 그거 이상해요. 쉘이 우리가 누구인지 확실히 알도록 합시다.
$ cd .
$ pwd
/tmp/shell-bash.OoVntBAM/new-dir
스크립트에서 cd .
이는 사용자가 현재 디렉터리에 계속 액세스할 수 있는지 테스트하는 데 사용할 수 있습니다.
if ! cd . 2>/dev/null; then
echo lost access to cwd >&2
exit 1
fi
또는 반대로,확인하다현재 사용자의 액세스 권한을 취소하는 일부 작업 후에는 현재 디렉터리에 더 이상 액세스할 수 없습니다.
현재 디렉터리에 대한 액세스 권한이 상실되는 이유에는 디렉터리 삭제 또는 누군가 디렉터리에 대한 실행 권한을 제거하는 것이 포함됩니다.
또 다른 예는 ie 를 사용 cd .
하지만 -P
ie 옵션을 사용하는 것입니다 cd -P .
. 현재 디렉터리가 심볼릭 링크를 통해 액세스되면 "물리적" 디렉터리가 됩니다.
$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ ln -s dir link-dir
$ ls -l
total 2
drwxr-xr-x 3 kk wheel 512 May 8 00:48 dir
lrwxr-xr-x 1 kk wheel 3 May 8 00:46 link-dir -> dir
이제 디렉토리 dir
와 해당 디렉토리에 대한 심볼릭 링크가 생겼습니다. 심볼릭 링크를 통해 디렉토리에 들어갑니다.
$ cd link-dir
$ pwd
/tmp/shell-bash.OoVntBAM/link-dir
그 다음에...
$ cd -P .
$ pwd
/tmp/shell-bash.OoVntBAM/dir
답변2
올바른 견적은 다음 cd ..
과 같아야 합니다.
'..'는 이전 경로 이름 구성 요소를 슬래시 또는 DIR의 시작 부분으로 다시 이동하여 처리됩니다.
그리고 그렇습니다. cd .
현재 디렉터리는 변경되어서는 안 되며, 변경되지도 않습니다.
그러나 현재 디렉터리의 이름이 변경되었을 수 있습니다.
$ mkdir thisdir
$ cd thisdir
$ cd .
$ pwd
/home/isaac/thisdir
$ mv ../thisdir ../xxxx
$ cd .
$ pwd
/home/isaac/xxxx
현재 디렉토리에 기호 링크가 포함되어 있거나 실제 디렉토리 이름이 변경되었습니다.
$ cd ~/ttt
$ pwd
/home/isaac/ttt
$ cd -P .
$ pwd
/home/isaac/me/init/basicdirs.d/ttt
따라서 cd .
다른 것과 마찬가지로 사용하면 으로 변경cd DIR
됩니다 . 동일한 디렉터리인 것처럼 보일 수 있지만 동일한 디렉터리라도 DIR의 이름이나 경로가 다를 수 있습니다.pwd
DIR