목록으로

환경변수, 어디에서든 명령어를 실행하는 방법

시리즈, 입문
2024. 4. 10. PM 9:13:50

파일 실행하기

chmod 명령어를 학습할 때 hello.sh 파일을 실행했습니다. 텍스트 파일인데, 셔뱅 줄을 넣어서 이 텍스트 파일을 해석하고 처리할 해석기(인터프리터)를 지정하였죠. 이 파일을 실행할 때 Shell에서 어떤 명령줄을 입력해 실행했는지 기억하시나요? 기억하신다면 앞선 대뜸퀴즈를 무난히 푸셨을 거예요.
"개똥아~! 메론맛 아이스바 사와!"라고 외치면 개똥이들 각자는 자신에게 하는 말인지 알 수 없어요. 어쩌면 누군가 대꾸하겠지라고 생각하여 아무도 대답하지 않을지도 모르죠. "종로 1024길 2048 건물에서 4096호에 사는 개똥아~! 메론맛 아이스바 사와! 네 것 빼고!"라고 명확하게 지정해야 아이스바를 사오든 거절 의사가 들려오든 반응이 올 거예요.
파일을 실행하려면 실행할 대상을 명확하게 가리켜야 해요. hello.sh이 아니라 ./hello.sh라고 명확하게 지정해야 해요. 다른 경로에 있는 파일을 경로를 사용해 접근하는 건 이해되는데, 눈 앞에 뻔히 보이는 hello.sh 파일 마저 현재 경로를 뜻하는 ./를 사용해야 하는 이유는 뭘까요? 설명을 드리기 전에 다른 것을 먼저 살펴 볼게요.

PATH 환경 변수(Environment Variable)

명령어를 실행하면 PATH 환경 변수를 참조합니다

PATH 환경 변수는 Shell이나 운영체제가 프로그램이나 명령어를 찾아서 실행할 때 검색하는 디렉터리들의 목록을 담고 있는 환경 변수예요. 문장이 좀 어렵죠? 쉽게 말해서, 컴퓨터에게 "프로그램을 찾을 때 어디어디를 봐라"라고 알려주는 설정값이예요. 예를 들어, PATH 환경 변수에 /bin, /usr/bin, /usr/local/bin 디렉터리 경로를 담았다고 가정할게요. Shell에서 whoami라는 명령어를 실행하면 다음 과정을 거쳐요.
  1. /bin 경로에 whoami가 있는지 검색. 없으면 다음으로 이동.
  2. /usr/bin 경로에 whoami가 있는지 검색. 없으면 다음으로 이동. 근데 있음.
  3. /usr/bin/whoami 실행.
whoami 명령어는 현재 Shell에 접속한 사용자의 계정명을 출력해줍니다.
이번엔 asldkjflkajsdfklwjelkjfklasdf 명령어를 실행한다고 가정하죠. 이런 명령어는 없죠. 이 명령어를 실행하면 앞서 설명드린 과정을 거치며 명령어가 있는지 찾습니다. PATH에 등록한 모든 경로를 뒤졌는데도 찾지 못하면 asldkjflkajsdfklwjelkjfklasdf not found라는 메시지를 출력하며 종료되지요.

PATH 환경 변수의 구조

Shell에서 다음 명령어를 실행해보세요.
사람마다 출력되는 내용이 다를 거예요. 저는 다음과 같이 나오네요.
echo 명령어는 문자열이나 변수에 담긴 값을 출력해요. $PATH는 PATH라 이름 붙은 변수를 뜻하고요. $ 기호는 앞서 학습한 "Shell에서 유용한 키와 기호 문자"에서도 소개됐었죠?
푸딩캠프 뉴스레터를 구독하면 학습과 성장, 기술에 관해 요약된 컨텐츠를 매주 편하게 받아보실 수 있습니다.
목차