실수로 주문을 망쳤어요 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
.ls
cd
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