CD가 유용합니까?

CD가 유용합니까?

내가 따라온 튜토리얼 중 하나는 cd .작동하지 않는다고 간략하게 설명합니다. OP에 표시된 문제를 재현하려고 할 때Symlink 재귀 - "재설정"이 되는 이유는 무엇입니까?, 나도 시도해 보았는데 cd .OP에서 설명한 것과 동일한 효과( $PWD변수 증가)가 나타났습니다. 이를 상쇄하는 데 사용할 수 있습니다 cd -P.

사람들이 실제로 를 사용하고 싶어하는 상황이 있을까요 cd . ?

답변1

나는 이것이 지나친 생각의 문제라고 생각한다. cd .아마도 일반적인 경우에 사람들이 수동으로 실행하는 것은 아니지만 프로그래밍 방식으로 실행될 수 있는 것은 분명합니다( cd사용자가 경로를 제공한 파일이 포함된 디렉터리로 이동할 수 있는 상황을 생각해 보세요). 따라서 특정 목적을 가질 필요는 없습니다. 일반적인 의미를 만족하는 한 cd <some-path>유용합니다.

답변2

마지막 명령이 실행된 이후 디렉토리 경로가 변경되었을 수 있으며 cd .bash 및 ksh93 쉘이 없으면 질문에 링크된 게시물에 설명된 논리적 작업 디렉토리에 의존하게 되므로 이를 호출하면 쉘이 시스템을 cd .실행하게 됩니다. getcwd()호출하면 현재 경로가 여전히 유효한지 확인할 수 있습니다.

Bash에서 재현하는 단계:

  1. 터미널 탭 문제mkdir ./dir_no_1; cd ./dir_no_1
  2. 다른 터미널 탭 문제mv dir_no_1 dir_no_2
  3. 첫 번째 터미널 탭 echo $PWD관련 문제 pwd디렉토리 이름이 외부적으로 변경되었으며 셸 환경이 업데이트되지 않았습니다.
  4. 질문 cd .; pwd; echo $PWD. 값이 업데이트되었으니 참고하세요.

그러나 ksh93은 환경 정보를 업데이트하지 않으므로 cd .ksh93에서는 실제로 유용하지 않을 수 있습니다. /bin/dashUbuntu 및 기타 Debian 기반 시스템 에서는 오류를 cd .반환 하지만 작동합니다(ksh93과 달리).dash: 3: cd: can't cd to .cd -P .

답변3

또 다른 사용 사례는 cd .현재 있는 디렉토리가 삭제된 다음 다시 생성되는 경우입니다. 다음을 시도해보세요 -

  1. 디렉터리 생성temp
  2. cd temp그런 다음ls
  3. 다른 터미널을 열고 디렉토리를 삭제한 후 다시 생성하십시오.temp
  4. 첫 번째 터미널에서 돌아와서 ls를 실행해 보세요. 이로 인해 오류가 발생합니다.ls: cannot open directory .: Stale file handle
  5. cd .그런 다음 ls를 실행하면 작동합니다.

답변4

프로그래밍 관점에서 보면 무작동(no-op)으로 유용합니다. 외부 입력에서 제공되는 경로를 고려하세요.

read -p "Path to file: " p
dirn=$(dirname "$p")
file=$(basename "$p")
echo "dirn=$dirn, file=$file"
cd "$dirn"
ls -ld "$file"

"fred.txt"와 같은 경로를 사용하면 디렉토리는 다음 .과 같이 됩니다.cd .

관련 정보