개발고생일지/Mac(맥)

Mac(맥) 터미널에서 'command not found' 혹은 'permission denied' 해결방법

Fartist 2023. 5. 10. 11:08
- 목차
1. Command not found, permission denied 오류
2. 해결 방법
3. 후기

[그림 1] Mac 터미널 먹통, command not found 해결 방법

 


1.  Command not found, permission denied 오류

[그림 2] Mac 터미널에서 계속되는 오류 메시지 출력

 Mac에서 환경변수 설정을 만지고 나서 '(eval):66: command not found: dirname'이라는 오류 메시지가 터미널에 뜨면서 터미널에서 기본 명령어들이 먹통이 되는 경우가 있습니다. [그림 2]처럼 'command not found' 오류 메시지를 출력하면서 명령어 실행이 불가하게 됩니다. 간혹 교재에서 명령어 안내를 '$ open ~/.zshrc'라고 되어 있어서 '$'(달러표시)를 붙여서 명령어를 입력해 보면 이번에는 $라는 명령어는 찾을 수 없다고 하죠. 우여곡절 끝에 $표시와 기존의 명령어를 붙여서 '$open ~/.zshrc'라고 입력하면 이번에는 'zsh: permission denied:'이라고 오류 메시지를 출력합니다. 

오류 메시지 목록
(eval):66: command not found: dirname
zsh: command not found:
zsh: permission denied:

 

 이 문제를 해결하기 위해서는 수정했던 환경변수창에 다시 접근하여 수정했던 것을 롤백해야 합니다.


2.  해결 방법

export PATH=$PATH:/bin:/usr/local/bin:/usr/bin

[코드 1] 환경변수창에 접근 허용

vi ~/.zshrc

[코드 2] vi로 환경변수창 열기

note
vi는 문서편집 명령어입니다. vi로 특정 문서에 접근하면 vi에서 제공하는 편집 명령어를 사용하여 문서를 편집할 수 있습니다.
직관적인 방식이 아니므로 반드시 명령어를 숙지하고 편집해야 합니다. 문제해결을 위해 사용하는 명령어로는 다음과 같습니다.

i 'INSERT'모드 전환
:w 저장하기
:q 종료하기
! (명령어 뒤에 붙어서) 강제명령어
:wq! 문서를 저장하고 강제 종료

[그림 3] 코드 1 입력하고 코드 2로 .zshrc에 접근하기

 [그림 3]처럼 코드 1, 코드 2를 입력해서 환경변수창에 접근합니다. 

[그림 4] vi 편집기로 환경변수창 열람

 이제 .zshrc를 열람하였고, vi 편집기로 문서를 오류 나기 이전으로 수정해야 합니다. 현재의 상태에서는 아무런 입력을 할 수 없습니다. vi 명령어 'i'를 누르면 'INSERT'가 최하단에 나타나면서 비로소 문서를 수정할 수 있습니다.

[그림 5] 'INSERT'모드

 

[그림 6] .zshrc 수정 후 편집모드 해제

환경변수창을 vi 편집기로 수정한 후에 저장하기 위해서는 INSERT모드에서 빠져나와야 합니다. 'ESC'키를 누르면 최하단에 'INSERT'가 사라지면서 편집모드에서 빠져나옵니다. 이 상태에서 vi 편집기를 저장하고 종료하는 명령어를 입력할 수 있습니다.

[그림 7] vi편집기 저장 후 종료
[그림 8] 터미널 복귀

 vi 편집기를 종료하면 자동으로 터미널로 복귀합니다. 이제 터미널을 재실행하면 환경변수의 오류로 일어났던 명령어 인식오류, 접근 권한 오류가 해결된 것을 확인할 수 있습니다.

[그림 9] 문제가 해결된 터미널 화면


3.  후기

 최초로 이 문제가 발생했을 때, '접근 권한'에 초점을 맞추어 '관리자 권한'으로 터미널을 실행하는 것을 목표로 방법을 찾았습니다. 그 결과로 sudo 명령어나, dsenableroot 명령어를 통해 root(관리자 권한) 실행 방법, su 명령어로 강제 실행 방법 등을 찾았습니다. 해당 방법들은 애초에 '기본 명령어를 모두 인식하지 못하는 상태'에서 아무런 효과를 볼 수 없어서 많이 답답했습니다. 말 그대로 터미널이 깡통이 되어버려 아무것도 할 수 없었습니다. 

 다행히 오류가 나기 직전에 했던 작업이 '환경변수'를 수정했던 작업이었기 때문에 접근 방법을 '환경변수에 접근하는 것'으로 바꾸면서 해결의 실마리를 얻었습니다. 

 개발 공부를 시작하고, 새로운 개발자 툴을 설치하면서 환경변수를 조작할 기회가 많습니다. 실수로 환경변수에서 오류가 발생하면서 위 글과 같은 오류가 발생했다면, 이 해결 방법을 차근차근 따라 하시면서 오류를 수정하시기 바랍니다. 

 이 글이 도움이 되길 바랍니다.

 

반응형