다음 명령을 실행하고 있습니다.
cd dirname; echo $?
이것은 항상 0
cd가 성공했는지 여부를 반환합니다. 이것은 나에게 큰 두통을 안겨준다.
오류 메시지를 읽지 않고 CD가 성공했는지 어떻게 확인할 수 있습니까?
답변1
cd
그 이유 는 평소처럼 내장 쉘이 아니기 때문일 수도 있지만 ,
- 쉘 함수
- 또는 별칭
검사를 통과했습니다 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"