-bash: /bin/cd: 해당 파일이나 디렉터리가 없습니다. cd 후에 자동으로 ls를 실행합니다.

-bash: /bin/cd: 해당 파일이나 디렉터리가 없습니다. cd 후에 자동으로 ls를 실행합니다.

실수로 주문을 망쳤어요 cd.

ls호출한 후 자동으로 실행해 보려고 합니다 .cd

해야 한다는 게시물을 찾았 alias cd='/bin/cd && /bin/ls'지만 이제는 -bash: /bin/cd: No such file or directory더 이상 디렉토리를 변경할 수 없습니다.

답변1

귀하의 시스템(많은 Unix 시스템과 마찬가지로)에는 외부 명령이 없습니다 cd(적어도 해당 경로에는 없음). 하나가 있더라도 ls원래 디렉토리의 디렉토리 목록을 제공합니다. 외부 명령은 호출 프로세스(쉘)의 디렉터리 1을 변경할 수 없습니다 .

환경에서 별칭을 제거합니다 unalias cd(그리고 별칭을 추가했을 수 있는 모든 쉘 초기화 파일에서 해당 정의를 제거합니다).

쉘 함수를 사용하면 정상적으로 작동하게 할 수 있으며, 성공하면 마지막에 추가 호출을 수행할 수 있습니다 cd.lscd

cd () {
    command cd "$@" && ls -lah
}

또는,

cd () { command cd "$@" && ls -lah; }

그러면 cd함수에 제공한 것과 동일한 명령줄 인수를 사용하여 셸에 내장된 명령이 호출됩니다. 디렉토리 변경이 성공하면 이 명령이 실행됩니다 ls.

command명령은 쉘이 함수를 재귀적으로 실행하는 것을 방지합니다.

위에서 작성한 함수 정의는 셸의 시작 파일에 저장됩니다. 네 bash, 그럴 수도 있어요 ~/.bashrc. 그런 다음 함수 정의는다음 새로운 대화형 셸 세션. 활성화하고 싶다면지금를 누른 다음 대화형 쉘 프롬프트에서 함수 정의를 있는 그대로 실행하면 현재 대화형 세션에서 함수 정의가 정의됩니다.


1 이 명령을 외부 명령으로 사용할 수 있는 시스템에서 cd이 명령은 호출 프로세스의 디렉터리도 변경하지 않습니다. 이러한 명령의 유일한 실제 용도는 POSIX 준수를 제공하고 디렉터리를 특정 디렉터리로 변경하는 테스트 역할을 하는 것입니다.가능할 것이다.

답변2

별칭을 다시 제거하여 문제를 해결할 수 있었습니다.unalias cd

답변3

이는 다음과 같은 이유로 발생합니다.

$ type cd

cd is a shell builtin

관련 정보