명령어 좀 치게 해줄래...? - command not found와 환경변수

최수진·2022년 11월 12일
0
post-thumbnail

타입스크립트 책을 집필하면서 컴퓨터에 typescript와 ts-node를 깔게되었다. typescript의 컴파일을 편하게 해주기위해 ts-node를 전역으로 설치하고 ts-node test.ts를 쳤더니 계속 command not found가 떴다.

command not found는 무엇인가?

말그대로 명령어를 찾을 수 없다는 말이다. 내가 사용하는 맥북의 경우 리눅스 기반이기 때문에 ts-node를 깔 때 원래는 해당 명령어를 사용할 수 있도록 .bash_profile에 등록이 되어야하는데... 왜 아직도 등록되지않았는지 모르겠다. 다른 동료 맥북 사용자들은 잘 등록이 되었는데 말이다.

❗️ 해결방법

1. 터미널을 실행한 뒤 홈경로로 이동

터미널에서 cd ~ 를 입력하면 홈경로로 이동할 수 있다.

2. npm bin -g 명령어를 사용해 현재 ts-node가 깔린 전역 경로(path)를 확인한다.

3. 홈경로에서 .bash_profile 이 있는지 확인

ls -a 를 입력하면 숨김파일을 포함한 경로 안의 모든 파일을 볼 수 있다.
지금은 해결한 상태이기 때문에 .bash_profile이 존재하지만 기존에는 이 파일조차 없었다.
해당 파일이 없으면 touch .bash_profile 을 입력하여 파일을 생성해준다.

4. 2번에서 확인한 경로를 .bash_profile에 등록해준다.

터미널에서 open .bash_profile 을 입력해 해당 파일을 열면 에디터가 열리는데 만약, 지금 사진처럼 경로가 등록되어있지않다면 다음과 같은 형식으로 경로를 추가해준다.

export PATH=${PATH}:추가할 경로

💡 용어 정리

용어설명
bash shell내가 입력한 명령을 해석해서 대신 실행해주는 쉘
shell운영체제에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램
환경변수운영체제가 어떤 프로세스를 실행시킬 때, 그 경로를 찾는데에 활용된다.
현재의 경우 ts-node를 실행시키고자 운영체제가 어떤 위치에 ts-node가 있는지 알 수 있도록 경로를 설정해주는 것
.bash_profile환경변수와 bash가 수행될 때 실행되는 프로그램을 제어하는 지역적인 시스템설정과 관련.
오직 그 사용자에게만 한정되고 다른 사람에게는 영향을 미치지 않는다.

만약, ls , mkdir, touch 등과 같은 내부 명령어가 아니면 Path 환경변수에 지정된 경로에서 입력받은 명령과 같은 파일을 찾아 실행해준다.

5. 변경된 파일 적용하기

터미널에서 source .bash_profile을 입력하여 꼭 수정된 경로를 적용시켜줘야한다.
이렇게 하고나니 ts-node 라는 명령어가 문제없이 잘 실행되었다!


의문점

해결하고나서 의문점이 생겼다. ts-node 명령어 사용에 문제가 있긴했지만 지금까지 다른 명령어는 환경변수를 등록해주지않아도 명령어 사용이 가능했다.

예전에 윈도우를 사용할 때는 java를 설치하고 java -v과 같은 명령어를 사용하려면 환경변수에 꼭 해당 경로를 등록해주곤 했었는데, 맥북으로 바꾸고 나서는 그런 번거로움이 없어졌기에 신기하다고만 생각하고 있었는데 이번 오류를 해결하면서 알게된 점이 있었다. 맥북에서 환경변수를 따로 등록하지 않아도 되는 이유는 리눅스 폴더 구조에 있다. 이 부분은 따로 포스팅하여 이 글에 추가하려고 한다.

profile
왜 그럴까?

0개의 댓글