command not found : curl, sudo

우진·2024년 11월 15일

🔖 배경

  1. 디스코드 노래봇을 만들고 있었음.
  2. ffmpeg 설치해야됨.
  3. 그러려면 homebrew 설치해야됨.
  4. 터미널에 homebrew 설치 명령어 입력함. 근데 command not found : curl 에러 뜸.
  5. 이것저것 해보다가 sudo를 썼는데 command not found : sudo도 뜸.
  6. 뭔가 잘못되었다 .. 쎄함

💡 해결

export PATH=/usr/bin:/usr/sbin:/bin:/usr/local/bin:/sbin:/opt/x11/bin:$PATH

이거 터미널에 입력했더니 해결. 명령어 다 먹힘.

⚙️ 원리

1. PATH란?

•	PATH는 터미널에서 실행 가능한 프로그램들의 디렉토리 경로를 저장하는 환경 변수입니다.
•	터미널에서 명령어를 입력하면, 운영 체제는 이 PATH에 지정된 디렉토리를 순서대로 탐색하여 해당 명령어에 대응하는 실행 파일을 찾습니다.

예를 들어:

curl

•	터미널은 PATH에 나열된 디렉토리에서 curl 실행 파일을 찾습니다.
•	curl이 PATH에 포함된 디렉토리에 없다면, command not found 오류가 발생합니다.

2. 왜 command not found 오류가 발생했나?

•	curl, sudo 등은 일반적으로 /usr/bin이나 /bin 디렉토리에 위치합니다.
•	하지만 PATH 환경 변수에서 이 디렉토리가 빠지면, 운영 체제는 해당 명령어를 어디에서 실행해야 할지 찾을 수 없습니다.

3. 해결 방법: PATH에 디렉토리 추가

export PATH=/usr/bin:/usr/sbin:/bin:/usr/local/bin:/sbin:/opt/X11/bin:$PATH 명령어를 실행하면:
1. 기존 PATH에 /usr/bin, /usr/sbin, /bin, /usr/local/bin 등의 디렉토리를 우선적으로 추가합니다.
2. $PATH는 기존 PATH의 값을 가져오는 역할을 합니다. 새로운 경로를 추가한 뒤 기존 PATH를 이어붙이는 방식입니다.
3. 이 명령어를 실행하면 PATH가 수정되어 터미널이 명령어를 올바른 디렉토리에서 찾을 수 있게 됩니다.

4. 왜 이 방법으로 해결됐을까?

•	MacOS의 경우, PATH 설정이 잘못되었거나 특정 소프트웨어가 PATH를 덮어썼을 가능성이 있습니다.
•	디렉토리를 수동으로 추가하여 PATH를 복구했기 때문에 문제가 해결된 것입니다.

5. PATH 확인 방법

다음 명령어를 실행하여 현재 PATH를 확인할 수 있습니다:

echo $PATH

출력 예시:

/usr/bin:/usr/sbin:/bin:/usr/local/bin:/sbin:/opt/X11/bin

이 값 안에 명령어가 위치한 디렉토리가 포함되어 있는지 확인하세요.

6. PATH를 영구적으로 설정하는 방법

export PATH 명령어는 현재 터미널 세션에서만 유효합니다. 터미널을 종료하거나 다시 열면 PATH가 초기화됩니다. 이를 영구적으로 적용하려면 쉘 설정 파일을 수정해야 합니다.
1. zsh 사용 중일 경우 (MacOS 기본 쉘):
• ~/.zshrc 파일을 열기:

nano ~/.zshrc

•	아래 내용을 추가:

export PATH=/usr/bin:/usr/sbin:/bin:/usr/local/bin:/sbin:/opt/X11/bin:$PATH

•	저장하고 종료 (Ctrl + O, Enter, Ctrl + X).

2.	변경 사항 적용:

source ~/.zshrc

🤩 결론

•	PATH는 터미널에서 명령어를 실행할 때, 해당 실행 파일이 있는 디렉토리를 지정하는 환경 변수입니다.
•	문제가 발생한 이유는 PATH에서 필요한 디렉토리가 빠졌기 때문입니다.
•	PATH를 수정하고 영구적으로 설정하면, 향후에도 비슷한 문제가 발생하지 않습니다.

0개의 댓글