터미널에서 디렉터리로 이동하려고 cd 명령어를 입력했는데 갑자기 "bash: cd: too many arguments" 또는 "zsh: cd: too many arguments"라는 오류 메시지가 나타나면 당황스러울 수 있습니다.
하지만 걱정할 필요는 없습니다. 이 글에서는 cd: too many arguments 오류가 발생하는 원인을 살펴보고, 초보자도 바로 따라 할 수 있는 5가지 해결 방법을 단계별로 자세히 안내해 드립니다.
Zsh/Bash에서 'cd: 인수가 너무 많습니다' 오류가 발생하는 이유
평소에는 cd 명령어 뒤에 파일 경로를 입력하면 명령 셸이 해당 디렉터리로 바로 이동합니다. cd 명령은 디렉터리 이름 하나를 인수로 받아 현재 작업 디렉터리를 지정된 디렉터리로 변경하는 역할을 합니다.
인수를 입력하지 않으면 HOME 환경 변수에 지정된 홈 디렉터리로 이동하게 됩니다. 그런데 문제는 디렉터리 이름에 공백이나 특수 문자가 포함되어 있을 때 발생합니다. Unix 셸은 공백을 기준으로 입력값을 구분하기 때문에, 공백이 있는 디렉터리 이름을 여러 개의 인수로 인식하고 결국 cd: too many arguments 오류를 출력하게 되는 것입니다.
참고: zsh 셸을 사용 중이라면 공백이 포함된 경로로 이동하려 할 때 "cd: string not in pwd"라는 오류 메시지가 나타날 수도 있습니다.

일부 사용자는 Unix 셸에서 한 번에 여러 디렉터리로 이동할 수 있는지 궁금해하기도 하는데, 정답은 '아니요'입니다. 여러 디렉터리에 진입하려면 cd 명령어를 반드시 한 번씩 실행해야 합니다.
bash: cd: too many arguments / zsh: cd: string not in pwd 오류 해결 방법
앞서 설명했듯이 Unix 셸은 공백이나 특수 문자가 포함된 디렉터리 이름을 여러 개의 인수로 잘못 인식하기 때문에 디렉터리 전환에 실패합니다. 아래에서 소개하는 다섯 가지 해결 방법을 활용하면 cd 명령어가 정상적으로 작동하도록 만들 수 있습니다.
방법 1: 디렉터리 이름을 큰따옴표로 감싸기
공백이나 특수 문자가 포함된 디렉터리로 성공적으로 이동하는 가장 간단한 방법은 디렉터리 이름을 큰따옴표(")로 묶는 것입니다.
1단계: 컴퓨터에서 터미널을 실행합니다.
2단계: cd를 입력한 후 큰따옴표 기호를 입력합니다.
3단계: 큰따옴표 안에 공백이나 특수 문자가 포함된 파일 경로를 입력합니다.
cd "my new folder"
4단계: Enter(Return) 키를 눌러 명령어를 실행하면 지정한 디렉터리로 이동한 것을 확인할 수 있으며, 이후 새 디렉터리에서 원하는 작업을 자유롭게 수행할 수 있습니다.

전체 경로를 통째로 따옴표로 감싸거나, 공백이 포함된 경로 요소만 부분적으로 감싸도 됩니다.
방법 2: 백슬래시(\)로 공백 처리하기
디렉터리 이름에 공백이 있으면 Unix 셸은 이를 두 개 이상의 인수로 분리해 버립니다. 이때 백슬래시(\)를 사용하면 공백을 이스케이프(escape)하여, 셸이 공백을 인수 구분자가 아니라 일반 문자로 인식하도록 만들 수 있습니다.
1단계: 터미널을 실행합니다.
2단계: cd를 입력하고 이동하려는 디렉터리 경로를 입력합니다.
3단계: 디렉터리 이름의 공백 앞에 백슬래시를 추가합니다. 슬래시(/)가 경로 요소를 구분하는 기호라면, 백슬래시(\)는 공백을 이스케이프하는 용도라는 점을 기억하세요.
cd desktop/my\ new\ folder
4단계: Return(Enter) 키를 누르면 cd 명령어가 새 디렉터리로 이동시켜 줍니다.

방법 3: Tab 키 자동 완성 활용하기
Windows, Linux, macOS의 명령줄 프로그램에서는 Tab 키로 명령어를 자동 완성할 수 있습니다. Unix 명령 프롬프트에서 디렉터리를 더 빠르게 전환하는 데에도 유용한 방법입니다.
1단계: 기기에서 명령 셸을 엽니다.
2단계: 이동하려는 경로를 조금 입력합니다.
3단계: 키보드의 Tab 키를 눌러 자동 완성 기능을 활용합니다.
이름이 비슷한 폴더가 여러 개 있다면, 원하는 폴더를 구별할 수 있을 만큼 이름의 앞글자 몇 개를 먼저 입력해야 합니다. 만약 자동 완성이 작동하지 않는다면 지정한 경로가 실제로 존재하지 않는다는 의미입니다.
방법 4: 대상 디렉터리에서 직접 터미널 열기
굳이 cd 명령어 입력에 집착할 필요는 없습니다. 목적지 디렉터리에서 바로 터미널을 열어도 동일한 효과를 얻을 수 있습니다.
Linux를 사용 중이라면 아래 단계를 따라 해 보세요:
1단계: 파일 탐색기에서 해당 디렉터리를 엽니다.
2단계: 마우스 오른쪽 버튼을 클릭한 후 Open in Terminal(터미널에서 열기)을 선택하면 명령 셸에서 바로 작업을 이어갈 수 있습니다.
macOS를 사용 중이라면 다음 단계를 참고하세요:
1단계: Finder 창을 열고 해당 폴더로 이동합니다. Finder 창 하단에 경로 막대가 보이지 않으면 보기(View) → 경로 막대 보기(Show Path Bar)를 선택하세요.
2단계: 이동하려는 폴더를 마우스 오른쪽 버튼으로 클릭한 후 New Terminal at Folder(폴더에서 새 터미널 열기)를 선택합니다.

그러면 터미널이 자동으로 해당 작업 디렉터리로 전환됩니다.
방법 5: 폴더를 터미널 창으로 드래그하기
위의 방법들이 마음에 들지 않는다면, 마지막으로 시도해 볼 만한 방법은 폴더를 터미널 창으로 끌어다 놓는 것입니다. 터미널을 실행한 상태에서 폴더를 클릭한 채 드래그해 창 안으로 가져오면, 해당 디렉터리의 전체 경로가 자동으로 입력됩니다.
bash: cd: too many arguments 또는 zsh: cd: string not in pwd 오류를 성공적으로 해결했다면, 이 글을 공유해 더 많은 사람들에게 도움을 주는 것도 좋겠죠?
보너스 팁: cd 명령어를 더 스마트하게 활용하는 법
명령 셸을 처음 접하는 초보자이거나 터미널에 깊은 흥미를 느끼는 사용자라면, 아래의 다양한 cd 명령어 활용법이 큰 도움이 될 것입니다. 빠르게 살펴보세요:
- cd: cd만 단독으로 입력하거나 cd ~를 입력하면 항상 사용자의 홈 디렉터리로 이동합니다.
- cd . : 현재 위치한 디렉터리에 그대로 머물게 됩니다(즉, 디렉터리가 변경되지 않음). 셸 내부 코드가 재생성된 디렉터리를 제대로 인식하지 못하는 경우 유용하며, cd .를 실행하면 셸이 재생성된 디렉터리에 다시 연결됩니다.
- cd ~username: 해당 username 사용자의 홈 디렉터리로 이동합니다.
- cd dir (/ 없이 입력): 하위 디렉터리로 이동합니다. 예를 들어 /usr에 있을 때 cd bin을 입력하면 /usr/bin으로 이동하지만, cd /bin을 입력하면 루트 아래의 /bin으로 이동합니다.
- cd .. : 한 단계 위의 상위 디렉터리로 이동합니다. /usr/bin/tmp에 있다면 cd ..는 /usr/bin으로, cd ../..는 /usr로(두 단계 위) 이동시킵니다. 이 방식을 응용하면 하위 디렉터리 접근도 가능합니다. 예를 들어 /usr/bin/tmp에서 cd ../../local을 입력하면 /usr/local로 이동할 수 있습니다.
- cd - : 이전에 위치했던 디렉터리로 되돌아갑니다. 예를 들어 /usr/bin/tmp에서 /etc로 이동한 뒤 cd -를 입력하면 다시 /usr/bin/tmp로 돌아갈 수 있습니다. pushd와 popd 없이 두 디렉터리 사이를 빠르게 왕복할 때 매우 편리합니다.
마치며
cd: too many arguments 오류는 생각만큼 어렵거나 무서운 문제가 아닙니다. 이 글에서 소개한 5가지 간단한 해결 방법 중 하나 이상을 활용하면 얼마든지 원하는 디렉터리로 이동할 수 있습니다. 나아가 cd 명령어를 더욱 효과적으로 사용하는 다양한 팁도 함께 익혀두면 터미널 작업이 한층 수월해질 것입니다.
Mac에서 Zsh permission denied 오류가 발생하는 이유와 Mac 권한 거부 오류(권한 변경 포함)를 해결하는 방법이 궁금하다면 관련 글도 확인해 보세요.