`cd`의 반환 상태는 항상 0입니다.

`cd`의 반환 상태는 항상 0입니다.

다음 명령을 실행하고 있습니다.

cd dirname; echo $?

이것은 항상 0cd가 성공했는지 여부를 반환합니다. 이것은 나에게 큰 두통을 안겨준다.

오류 메시지를 읽지 않고 CD가 성공했는지 어떻게 확인할 수 있습니까?

답변1

cd그 이유 는 평소처럼 내장 쉘이 아니기 때문일 수도 있지만 ,

  1. 쉘 함수
  2. 또는 별칭

검사를 통과했습니다 type cd.

(질문을 "닫기" 위해 답변으로 댓글을 달았습니다.)

답변2

나의 어리석음!

HaukeLaging의 조언에 따라 저는 그렇게 했습니다 type cd. 이는 cd서버에서 사용자 활동을 기록하는 특정 bash 기능에 대한 별칭인 것으로 밝혀졌습니다 .cd

내 별칭이 cd반환되었고 cd스크립트가 정상적으로 작동하기 시작했습니다. 나는 이 질문에 대해 여기서 대답해야 한다고 생각하기 때문에 먼저 이 질문을 완전히 삭제하고 싶은 유혹을 잠시 느낍니다. 나는 다른 사람들에게 도움이 될 수 있습니다.

답변3

한 가지 해결책은 호출 앞에 bash 내장 "명령"을 접두어로 붙이는 것입니다. 이렇게 하면 실제 바이너리 "cd"가 강제로 사용됩니다.

    root@ds002:~# command cd /foo
    -bash: cd: /foo: No such file or directory
    root@ds002:~# echo $?
    1

답변4

나도 이런 일을 경험한 적이 있다. 다른 모든 사람들이 언급했듯이 이는 내 "cd"가 함수에 싸여 있기 때문입니다.

어쨌든, 이것은 작동할 것입니다.

command cd /mnt/c/nowhere && echo y # does not console "y"

관련 정보