외부 명령어를 입력하면 Shell은 프로그램을 찾기 위해 시스템을 검색하는 과정을 걸친다.
여기서 PATH 환경변수는 명령과 프로그램을 검색하는 디렉토리를 정의한다.
sudo echo "something"
명령어를 입력하면 다음과 같이 나온다.
john@root:~$ sudo echo "something"
[sudo] password for john:
something
우리가 터미널에 명령어를 입력하면 sudo
라는 명령어는 어떻게 인식해서 우리에게 결과값을 가져다 줄까? which
명령어를 통해 sudo
라는 명령어의 위치를 알아보자
# which는 특정 명령어의 위치를 찾아주는 명령어
john@root:~$ which sudo
/usr/bin/sudo
즉, sudo 라는 명령어는 /usr/bin/sudo
디렉토리에서 실행된다는 의미이다.
이제 echo $PATH
명령어를 통해 나의 모든 디렉토리의 경로를 알아보자.
#PATH 확인
john@root:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
① 우리가 리눅스에서 sudo
라는 명령어를 입력하게 되면,
② /usr/local/sbin:/usr/local/bin:/usr/sbin:
의 탐색 경로를 지나며
③ /usr/bin/sudo
디렉토리에서 sudo
라는 명령어가 실행이 된다.
sudo
라는 명령어를 입력하였을 때 /usr/bin/sudo
의 명령어를 일일이 입력해야 한다.append: 뒤에 새로운 디렉토리 추가
prepend: 앞에 새로운 디렉토리 추가
# 기존 PATH에 append
# 기존 PATH 뒤에 /some/dir 디렉토리 추가
john@root:~$ PATH=$PATH:/some/dir
# 기존 PATH에 prepend
# 기존 PATH 앞에 /root 디렉토리 추가
john@root:~$ PATH=/root:$PATH
https://aroundck.tistory.com/6920
https://www.youtube.com/watch?v=rJMFxIbDe-g&list=WL&index=1&t=495s&ab_channel=tutoriaLinux